home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EuroCD 3
/
EuroCD 3.iso
/
Communication
/
Citadel_BBS
/
Docs
/
oper3.man
< prev
next >
Wrap
Text File
|
1998-06-24
|
160KB
|
3,770 lines
C I T A D E L - 8 6
V3.39
OPERATIONS MANUAL
Copyright 1989 - 1991
by Hue, Jr.
C-86 Test System Sysop
91Jul26
TABLE OF CONTENTS
I. Introduction . . . . . . . . . . . . . . . . . . 1
II. Help Files . . . . . . . . . . . . . . . . . . . . 1
II.1. Location . . . . . . . . . . . . . . . . . 1
II.2. File Types . . . . . . . . . . . . . . . . 1
II.3. Optional Customization . . . . . . . . . . 1
II.4. Customizable Structure . . . . . . . . . . 2
II.5. Help File Variables . . . . . . . . . . . . 3
II.6. Required Customization . . . . . . . . . . 4
II.7. Optional Help Files . . . . . . . . . . . . 4
II.8. Adding Help Files . . . . . . . . . . . . . 5
II.9. New Users . . . . . . . . . . . . . . . . . 5
II.10. Delivered . . . . . . . . . . . . . . . . 6
III. Sysop Privileged Functions . . . . . . . . . . . 7
III.1. Introduction . . . . . . . . . . . . . . . 7
III.2. Access . . . . . . . . . . . . . . . . . . 8
III.3. Access Restrictions . . . . . . . . . . . 8
III.4. Sysop Capabilities . . . . . . . . . . . . 8
III.4.a <A>bort . . . . . . . . . . . . . . . . . 9
III.4.b <B>aud Rate Selection . . . . . . . . . . 9
III.4.c <C>hat Enable/Disable . . . . . . . . . . 9
III.4.d <D>ebug Switch . . . . . . . . . . . . . 9
III.4.e <E>cho To Screen . . . . . . . . . . . . 9
III.4.f <F>ile Grab . . . . . . . . . . . . . . . 9
III.4.g <I>nformation . . . . . . . . . . . . . . 9
III.4.h <M>odem Mode . . . . . . . . . . . . . .10
III.4.i <N>etworking Commands . . . . . . . . . .11
III.4.j <O>ther Commands . . . . . . . . . . . .11
III.4.k <R>einitialize Modem . . . . . . . . . .11
III.4.l <S>et Date . . . . . . . . . . . . . . .11
III.4.m e<X>it To MS-DOS . . . . . . . . . . . .11
III.5. Undocumented Sysop Menu Commands . . . . .11
III.6 User Administration . . . . . . . . . . . .11
III.6.a <A>dd User . . . . . . . . . . . . . . .12
III.6.b <D>oor Privileges . . . . . . . . . . . .12
III.6.c <E>ndless User (permanent account). . . .12
III.6.d <K>ill Account . . . . . . . . . . . . .12
III.6.e <N>etwork Privileges . . . . . . . . . .12
III.6.f <P>rivileged Switch . . . . . . . . . . .12
III.6.g <T>wit Status . . . . . . . . . . . . . .12
III.6.h e<X>it . . . . . . . . . . . . . . . . .12
IV. User Levels & Aide stuff . . . . . . . . . . . . .13
IV.1. Introto User Levels . . . . . . . . . . . .13
IV.2. Normal Users . . . . . . . . . . . . . . .13
IV.3. Aides . . . . . . . . . . . . . . . . . . .13
IV.3.a Message Manipulations . . . . . . . . .13
IV.3.a.1 Message Deletion . . . . . . . .13
IV.3.a.2 Moving Messages . . . . . . . .13
IV.3.a.3 Copying Messages . . . . . . . .14
IV.3.a.4 Conversions . . . . . . . . . .14
IV.3.b General Aide Commands . . . . . . . . .14
IV.3.b.1 Room Elimination . . . . . . . .14
IV.3.b.2 Empty Room Deletion . . . . . .14
IV.3.b.3 Room Editing . . . . . . . . . .14
IV.3.b.4 Message Insertion . . . . . . .15
IV.3.d Floors . . . . . . . . . . . . . . . .15
IV.3.d.1 Floor Creation . . . . . . . . .15
IV.3.d.2 Room Moving . . . . . . . . . .15
IV.3.d.3 Floor renaming . . . . . . . . .15
IV.3.d.4 Floor Killing . . . . . . . . .15
IV.3.e Aide Command Summary . . . . . . . . .15
IV.3.f Possible extra privileges . . . . . . .15
IV.4 Sysops . . . . . . . . . . . . . . . . . . .15
IV.4.a Message Journaling . . . . . . . . . .15
IV.4.b Directory Journaling . . . . . . . . .15
IV.4.c Copying Files . . . . . . . . . . . .16
V. Rooms . . . . . . . . . . . . . . . . . . . . . .17
V.I Room Attributes . . . . . . . . . . . . . .17
V.I.1. Room Archival . . . . . . . . . . . . . 17
V.I.2. Backbones . . . . . . . . . . . . . . . 18
V.I.3. Directory Status . . . . . . . . . . . . 18
V.I.4. Information Editing . . . . . . . . . . . 18
V.I.5. Innominate Status . . . . . . . . . . . 18
V.I.6. Lure Users . . . . . . . . . . . . . . . 18
V.I.7. Moderator . . . . . . . . . . . . . . . 19
V.I.8. Name Change . . . . . . . . . . . . . . 19
V.I.9. Only Invitational . . . . . . . . . . . 19
V.I.10. Privacy Status . . . . . . . . . . . . . 19
V.I.11. Temporary Status . . . . . . . . . . . .19
V.I.12. Shared Status . . . . . . . . . . . . .20
V.I.13. Upload/Download Status . . . . . . . . .20
V.I.14. Withdraw Invitations . . . . . . . . . .20
V.I.15. Network Downloadable . . . . . . . . . .20
V.II. Other Room Editing Commands . . . . . . . .20
V.III. Three Exceptions . . . . . . . . . . . . .20
VI. Files - Upload/Download Capabilities . . . . . . .20
VI.1. Origin . . . . . . . . . . . . . . . . . .20
VI.2. Creation . . . . . . . . . . . . . . . . .21
VI.3. User Commands . . . . . . . . . . . . . .21
VI.3.i. Content Listing . . . . . . . . . . . . .21
VI.3.ii. File Transfers . . . . . . . . . . . . .23
VI.3.ii.a Upload Protocols . . . . . . . . . . .23
VI.3.ii.b Download Protocols . . . . . . . . . .24
VII.<O>ther Commands . . . . . . . . . . . . . . . . .24
VII.1. General Purpose . . . . . . . . . . . . .24
VII.2. Other Commands . . . . . . . . . . . . .25
VII.2.a. Deletion . . . . . . . . . . . . . . . .25
VII.2.b. Outside Commands . . . . . . . . . . . .25
VII.2.b.i. Restrictions . . . . . . . . . . . . .25
VIII.Miscellaneous . . . . . . . . . . . . . . . . . .26
VIII.1. Wha...? . . . . . . . . . . . . . . . .26
VIII.2. Chatty Questions . . . . . . . . . . . .26
VIII.3. Chat Capture . . . . . . . . . . . . .26
VIII.4. File Transfers while in Chat Mode . . . .27
VIII.5. ESCaping . . . . . . . . . . . . . . . .27
VIII.6 Typing at Keyboard W/User is in Control .28
VIII.6.a Sysop Autodial . . . . . . . . . . .28
VIII.6.b Chat Mode . . . . . . . . . . . . . .28
VIII.6.c Echo Mode . . . . . . . . . . . . . .28
VIII.7. Denizens Of The Status Bar . . . . . . .28
VIII.8. Modem Disabling . . . . . . . . . . . . .29
VIII.9. BADWORDS.SYS . . . . . . . . . . . . . .29
VIII.10. Massive Privileges . . . . . . . . . . .30
IX. SEA's ARC files . . . . . . . . . . . . . . . . .31
IX.1 DeArcing . . . . . . . . . . . . . . . . .31
IX.2 ARC Integrity Checks . . . . . . . . . . .31
X. PKWARE's ZIP Files . . . . . . . . . . . . . . .32
X.1 DeZIP . . . . . . . . . . . . . . . . . . .32
X.2 ZIP Integrity Checks . . . . . . . . . . . .32
XI. ZOO Files . . . . . . . . . . . . . . . . . . . .32
XI.1 DeZOO . . . . . . . . . . . . . . . . . . .32
XI.2 ZOO Integrity Checks . . . . . . . . . . . .32
XII. LHARC Files . . . . . . . . . . . . . . . . . . .32
XII.1 DeLZH . . . . . . . . . . . . . . . . . . .32
XII.2 LZH Integrity Checks . . . . . . . . . . .32
XIII. GIF Files . . . . . . . . . . . . . . . . . . .32
XIV. Sysop's Editor . . . . . . . . . . . . . . . . .32
XIV.1 Sysop Editor Notes . . . . . . . . . . . .34
XV. Door Support . . . . . . . . . . . . . . . . . . .35
XV.1. Administration . . . . . . . . . . . . . .35
XV.1.a. User Administration . . . . . . . . . . .35
XV.1.b. Door Administration . . . . . . . . . . .35
XV.2 BAT File Support . . . . . . . . . . . . . .37
XV.3 Compatability . . . . . . . . . . . . . . .38
XV.4 Automatic Doors . . . . . . . . . . . . . .38
XV.5 New User Doors . . . . . . . . . . . . . . .39
XVI. Citadel-86 As A Door . . . . . . . . . . . . . .39
XVII. External Protocol Drivers . . . . . . . . . . .40
XVII.1 Adding drivers . . . . . . . . . . . . . .40
XVII.2 Number of drivers . . . . . . . . . . . .41
XVII.3 USR HST 9600 notes . . . . . . . . . . . .42
XVIII. Questions & Answers . . . . . . . . . . . . . .42
XIX. #event Examples! . . . . . . . . . . . . . . . .43
XIX.1 Automating Backups . . . . . . . . . . . .43
XIX.2 Scheduled Network Sessions . . . . . . . .45
XIX.3 Anytime Network Sessions . . . . . . . . .46
XIX.4 Download Time Limits . . . . . . . . . . .47
XIX.5 Door Time Limits . . . . . . . . . . . . .48
XIX.6 Automatic Doors . . . . . . . . . . . . .48
XX. External Message Editors . . . . . . . . . . . .49
Appendix A: File Formats . . . . . . . . . . . . . .50
Appendix B: Contributors . . . . . . . . . . . . . . .52
I. INTRODUCTION
Hello, this is the Operations Manual for Citadel-86. In this manual
we will attempt to explain the daily machinations of Citadel-86 that you,
the sysop, will encounter. We've tried to cover as much as we can,
particularly concentrating on areas in which we've encountered numerous
questions, as well as other areas where we've noted sysops are not aware
of useful options.
There is something of a fuzzy line between this manual, OPER3.MAN, and
the Citadel-86 Installation Manual, INSTALL3.MAN. Some folk may think
that some subjects belong in the Installation Manual rather than here,
and vice-versa. If you don't find something in here, it wouldn't hurt
to peruse the Installation Manual.
Finally, and for the record, Citadel-86 is a direct port of Cynbe ru
Taren's CP/M Citadel 2.10 code, as obtained from the C Users Group (CUG).
Without Cynbe's genius, Citadel-86 would not exist.
II. Help Files
II.1. Location
The supporting help files of Citadel-86, which are simple text files,
should be located in the #HELPAREA drive and directory. As explained in
the Installation Manual, you should copy these files to that directory
before operating your system, unless you do not plan to provide help to
the users of the system.
II.2. File types
There are three types of Help files, identifiable by their extensions,
plus some miscellaneous types.
.BLB: These files contain miscellaneous messages and warnings for use
in certain set locations of Citadel-86.
.MNU: These files contain menus that are normally printed out when the
user touches '?' while using Citadel-86. Usually, these are just
lists of options.
.HLP: These are general help files that are accessible through the
.Help <filename> command. Generally, these files contain terse
instructions on the use of the system, including references to
other files that may be of help to the user.
II.3. Optional Customization
The Help files as delivered are of a generic nature, and any of them
may be modified using a text editor at the Sysop's option. The .BLB
files are generally English descriptions of operations, and can be
modified for greater readability/useability with little danger of any
problems.
On the other hand, the .MNU files should not be modified impulsively,
since they consist mostly of menu lists.
-1-
The .HLP files are the best candidates for customization, since they
are English descriptions, and, for the most part, are not "hard-coded"
into Citadel-86; rather, they are usually referenced by the user after
s/he finds a reference to them. See section II.3 below, too.
All help files are formatted just like messages when they are
displayed to the user; therefore, you should be sure to follow the normal
Citadel formatting rules when rewriting Help files, except that you
needn't place a lone space on a blank line to enforce that blank line (a
difficult thing to do with many editors).
II.4. Customizable structure
Beginning with Version 3.10 of Citadel-86, the help file system has
some capabilities not previously found in Citadel. Originally designed
and implemented by Paul Gauthier of Nova Scotia, Canada, the help system
of Citadel can now be menu driven at the option of the System Operator.
Access to the help system has not changed; both <H>elp and <.H>elp are
used to access help files.
In appearance, a help file using the enhanced capabilities will display
in this general format:
<text text text ...
... end text>
[a] <help file 1> <description for help file 1.>
[b] <help file 2> <description for help file 2.>
...
[x] <help file n> <description for help file n.>
Press RETURN to exit Help, or select an option [a-x]:
Essentially, when a user selects a help file to read, Citadel-86 will
display the text of the help file for the user, and then a list of help
files that the user may select from. Both the description, as before,
and the list of options is completely under the System Operator's control.
The ambitious System Operator with an ambitious, coherent view of what a
Citadel Help System should be can use this to construct what he wants.
So how do you make the list of options appear at the end of your
favorite help file? By specifying the names at the end of the help file
in question, prefixing each name with a "%" and suffixing each file name
with its description. For the above generic example, you would have
<text text text ...
... end text>
%<help file 1> <description for help file 1.>
%<help file 2> <description for help file 2.>
...
%<help file n> <description for help file n.>
-2-
and a concrete example would be
Hi, I'm a meaningless help file, and here are my options:
%SNEEZING How to sneeze while using Citadel.
%EATING How to eat at Utica College.
%SLEEPING How to sleep while baking in the heat of Minnesota.
Finally, this Help System applies only to the .HLP files (explained in
II.2), not to any other types of help.
II.5 Help File Variables
The Hot Help system can display the values of certain CTDLCNFG.SYS
parameters at the option of the sysop. The procedure resembles the manner
in which help files may be 'linked' together to make menus: a special
character followed by a string of characters naming the requested
variable. Assuming the request is valid, the request is replaced by the
actual value of the installation.
The special character is the up arrow, '^'.
Not all of the CTDLCNFG.SYS parameters are available for display.
In fact, only a few are available. This is the currently supported list:
Variable Name | CTDLCNFG.SYS counterpart (or whatever)
-----------------------------------------------------------
^nodetitle | #nodeTitle
-----------------------------------------------------------
^nodeid | #nodeId
-----------------------------------------------------------
^nodename | #nodeName
-----------------------------------------------------------
^nodedomain | #nodeDomain
-----------------------------------------------------------
^baseroom | #baseRoom
-----------------------------------------------------------
^mainfloor | #MainFloor
-----------------------------------------------------------
^sysopname | #sysopName
-----------------------------------------------------------
^variantname | The software name (i.e., "Citadel-86")
-----------------------------------------------------------
^sysopname | System Operator's account (if specified)
-----------------------------------------------------------
^doorlist | List of available doors.
-----------------------------------------------------------
^ulprotocols | List of available upload protocols
-----------------------------------------------------------
^dlprotocols | List of available download protocols
-----------------------------------------------------------
The last two are constructed from your CTDLPROT.SYS file described
in the section concerning external protocol drivers in this manual.
-3-
EXAMPLE
Suppose you wished to display the name of the sysop somewhere in your
help system to the users. You would then have something like this in the
help file(s):
" ... And, of course, the sysop bringing this wealth of information to
you today is ^sysopname. And now on to the next contestant on the
^nodename BBS!"
II.6. Required Customization
There are four files that you should customize for your installation
as soon as you feel you are prepared to. They are
HOURS.HLP: This file should contain the hours that your system is
available to users.
POLICY.HLP: This file should contain your general policy statement
regarding your system and its purpose. The rules of your system could
also possibly appear here.
NOCHAT.BLB: When you have Chat mode turned off on your system, this
file is printed to the users when they attempt to use the Chat command.
UNLOG.BLB: This file must be customized by Sysops running closed
systems only. When a user without a password attempts to log into
such a system, the system will print this file to the would-be user
if it exists. If the file doesn't exist, then a hard-coded message
instructing the user to proceed to Mail> and leave a message for
Sysop will appear.
II.7. Optional Help Files
There are 190 (!) Help files that do not need to be present
during Citadel-86's operation, but if they are will cause Citadel-86 to
alter its behavior slightly when a user is on the system.
The first three files are BANNER.PRE, NOTICE.PRE, and LONOTICE.PRE.
These files, if present in your #HELPAREA directory, will be printed
when carrier is detected and baud detected (BANNER.PRE) and before
BANNER.BLB (see below), after a successful login and before NOTICE.BLB
(NOTICE.PRE) (see below), and on logout before carrier is lost, before
LONOTICE.BLB is printed (LONOTICE.PRE) (see below). These files allow
the sysop to have a standard beginning of BANNER/NOTICE/LONOTICE.
The next file is BANNER.BLB. If this file is present in the #HELPAREA
directory when a user gains carrier, this file will be sent to the user.
This allows large beginning banners to be used. If the BANNER.BLB file is
not present, then the #nodeTitle parameter of CTDLCNFG.SYS will be sent
to the user in its place. However, BANNER.BLB can be overridden even
if present; see below.
The next file is NOTICE.BLB. If this file is present in #HELPAREA,
Citadel-86 will send it to the user upon a successful login. However,
NOTICE.BLB can be overridden even if present; see below.
-4-
The next file is LONOTICE.BLB. If this file is present in #HELPAREA,
Citadel-86 will send it to the user when the user executes any of the
Terminate commands before logging them out. However, LONOTICE.BLB can be
overridden even if present; see below.
Then there is NEWUSER.BLB. If this file is present, it will be
displayed to a prospective new user before* they are allowed to proceed
into initial account creation.
The next sixty (!) files, unlike the balance of the help files, do not
reside in #HELPAREA, but instead in the directory BANNERS, and they are
named BANNER.0, BANNER.1, ... BANNER.59. If these files are present, when
Citadel-86 recognizes the baud rate of the caller it will select one of
these banners, depending on the second of the minute, and display it to
the user.
The next sixty files, like BANNER.0, BANNER.1, etc., also reside
in the BANNERS directory. These are named LONOTICE.0, LONOTICE.1, etc. If
these files are available when a user logs off, one will be selected
randomly (by reading the system clock) and presented to the user before
carrier is dropped. If they are not available, then LONOTICE.BLB in
the #HELPAREA directory will be presented.
The next sixty files are also analogous to the BANNER.0, etc., files,
but they are named NOTICE.0, NOTICE.1, etc., and will take the place
of NOTICE.BLB if they are present in BANNERS.
The last three files are BANNER.SFX, NOTICE.SFX, and LONOTICE.SFX.
These files, if present, are printed after BANNER.BLB (or BANNER.xx),
NOTICE.BLB (or NOTICE.xx), and LONOTICE.BLB (or LONOTICE.xx),
respectively. Used in combination with the BANNERS directory, this lets
you put a standard suffix on your variable carrier banners, login
notices, and logout notices without forcing you to edit all of those
variable things.
II.8. Adding Help Files
Through the use of the .Help command, users may access any file that
you place in the #HELPAREA that has a .HLP extension. Therefore, if you
wish to extensively customize and extend the Citadel-86 Help system, you
should encounter few problems.
When a user enters ".Help ?", however, the file HELPOPT.HLP will be
printed to them. Therefore, you should take care to keep that file up
to date if you begin adding Help files.
II.9. New Users
You may configure Citadel-86 to automatically generate and deliver a
message in Mail> to a user on his or her initial login via two files
placed in the #HELPAREA directory. When the user has finished the initial
login process, he or she will discover the Mail> room has a message
in it, and Goto will take them to Mail. The message will have as the
author either Citadel, if there is no sysop designated in your
installation, or the name of the sysop (#sysopName in CtdlCnfg.Sys).
-5-
The two files are used for two different situations: new users who
designate themselves as novices, and new users who claim to be experts.
The names of the files are NOVMAIL.BLB for the Mail to the novices, and
EXPMAIL.BLB for the Mail to the experts.
You may write these files just like any other Help file (except for
using special directives); Citadel-86 will format them appropriately when
delivering them to the new user.
This option is also in effect if you are adding new users via the
Add User command of the User Admin Menu (Section III.6).
II.10. Delivered
These are the Help files currently contained in RUNTIME.ARC, which
you should have. While we always try to keep these files up to
date, we cannot guarantee that they are in keeping with the release
version of Citadel-86 that is in RUNTIME.ARC.
.BLB files
BANNER.BLB | Placeholder, printed to user on carrier detect.
BIONOV.BLB | Printed to novice users entering a biography.
ENTRY.BLB | Printed to novice users entering a message.
LONOTICE.BLB | Placeholder, printed to user on logout.
NEWROOM.BLB | Printed to novice users creating a new room.
NOCHAT.BLB | Printed to users using the Chat command when inactive.
NOTICE.BLB | Placeholder, printed to user on login.
PASSWORD.BLB | Printed to novice users during new login process.
READDATE.BLB | Printed on entry of ".Read New ?" or Old or Reverse or ...
UNLOG.BLB | Placeholder, for closed systems only (see X.4).
WCDOWN.BLB | Printed to novice users using .RX command.
WCUPLOAD.BLB | Printed to novice users using .EF or .EXF or .EF command
WXDOWN.BLB | Printed to novice users using .RW command.
WXUP.BLB | Printed to novice users using .EWF command.
YMDOWN.BLB | Printed to novice users using .RY command.
YMODEMUP.BLB | Printed to novice users using .EYF command.
YMUPLOAD.BLB | Printed to indicate the Ymodem upload is in SINGLE mode.
.MNU files
AIDE.MNU | Printed when an Aide enters .Aide ?.
AIDEFLR.MNU | Printed when an Aide enters ;Aide ?.
CONFG.MNU | Printed when a user enters .Enter Configuration ?.
CTDLOPT.MNU | Printed when a Sysop enters ? at the Privileged fn: prompt.
EDIT.MNU | Printed when a user enters ? at the entry cmd: prompt.
ENTOPT.MNU | Printed when a user enters .Enter ?.
FLOOR.MNU | Printed when a user enters ;?.
INFOEDIT.MNU | Printed when a user enters ? at the Info Edit prompt.
KNOWN.MNU | List of .Known Rooms options.
MAINOPT.MNU | Printed when a user enters ? or .? at a room prompt.
NETEDIT.MNU | Printed when the Sysop enters ? at the Net Edit: prompt.
NETOPT.MNU | Printed when the Sysop enters ? at the Net Cmd: prompt.
READOPT.MNU | Printed when a user enters .Read ?.
ROOMA.MNU | Printed when a remote Aide enters ? at the room edit:
| prompt.
ROOMS.MNU | Printed when a Sysop enters ? at the room edit: prompt.
SYSOPT.MNU | Printed when a Sysop enters ? at the Other commands:
| prompt.
USEROPT.MNU | Printed when a Sysop enters ? at the User Admin: prompt.
-6-
.HLP files
ADVANCED.HLP | List of advanced user Help Files and some text.
AIDE.HLP | Aide help file.
AIDEFLR.HLP | Aide help file for floor commands.
BIO.HLP | Help on Biographies.
BOARD.HLP | A menu of board-specific help files.
COMMANDS.HLP | List of help files for novices.
COMPCOMM.HLP | Help on Compressed files (ARC, ZIP, etc).
DOMAINS.HLP | Help on Citadel-86 domains.
DOORS.HLP | Help on Citadel-86 doors.
DOT.HLP | Help on the dot ('.') commands.
DOWNLOAD.HLP | Help on downloading from Citadel-86.
EDIT.HLP | Help with editing messages on Citadel-86.
ENTER.HLP | Help for the Enter commands.
FILES.HLP | Upload/Download help.
FLOORS.HLP | Floor help for the normal user.
FLOW.HLP | How to handle message flow.
FORGET.HLP | Help on the ZForget room command.
FORWARD.HLP | Mail forwarding (network).
GENERAL.HLP | General help listing.
GOTO.HLP | Help on the Goto command.
HELD.HLP | Help on Holding messages.
HELPOPT.HLP | A directory of Help files.
HIDDEN.HLP | Help on Hidden rooms.
HOURS.HLP | Place holder, should contain your hours.
LOGINOUT.HLP | Help on Logging in and out of the system.
MAIL.HLP | Help on Citadel-86's Mail system.
MAINHELP.HLP | Printed when user enters the Help command.
NET-MAIL.HLP | Help on C86Net mail.
NETROOMS.HLP | Help on shared rooms.
NOVFLOW.HLP | Help on message flow for novices.
NOVICE.HLP | General novice help.
POLICY.HLP | Place holder, should contain your policy.
PROTOCOL.HLP | Help on the available protocols.
READ.HLP | Help on using the Read commands.
RECONFIG.HLP | Information on reconfiguration.
SINGLE.HLP | Help on single-stroke commands.
SKIP.HLP | Help on using the Skip command.
SUMMARY.HLP | Complete summary of the "." and ";" commands.
TOC.HLP | Help on directory listings.
UPLOAD.HLP | Help on uploads.
WHATCOMP.HLP | What is a compressed file, anyways?
III. SYSOP PRIVILEGED FUNCTIONS
III.1. Introduction
In any system, there must be someone in charge if the system is to be
successful, and that person must have special abilities. In Citadel-86,
anyone who has access to the system console may execute many of the Sysop
capabilities, and the root of all these evils (for necessary as Sysop
powers are, they often lead to evil) is the Privileged Fn: menu (aka
the Sysop Menu).
-7-
III.2. Access
The Sysop Menu is accessed by typing a ^L (Control-L) at any room
prompt. When accessing them from the console, all of the Sysop menus
appear as a collection of options which can be selected either by their
first letter (mnemonic) or by moving the double arrow (using the arrow
keys) to the desired option and touching the return key ("ENTER").
Remote sysops can get the list of options available at a Sysop Menu
prompt by touching the '?'.
III.3. Access Restrictions
Access to the Sysop Menu is dependent on the location of the user at
the time of attempted use.
If the user is at the System Console, then the user does not even have
to log in to use the Privileged Functions, once the System is in Console
mode. While this may seem somewhat precarious to the prospective Sysop,
keep in mind that most installations do not normally run in public
locations.
If the user is a remote user, then access is very restricted. First,
the system must be using the #sysPassword feature (see Section II.5.C of
INSTALL3.MAN) of Citadel-86. Second, the user in question must be an
Aide of the system. Finally, the user must possess the password
specified in the #sysPassword file, because the system will query the
Aide for the password when the ^L is pressed.
III.4. Sysop Capabilities
Due to the prejudices of the implementor, Citadel-86's Sysop
capabilities are neither variegated, overly powerful, or pretty; the
users of the system come before the Sysop.
Be that as it may, the Sysop Menu is exactly what it sounds like: a
menu of choices which the Sysop may select from. After each command
is executed, the Sysop is queried for another.
This is the current official Sysop Menu.
(CTDLOPT.MNU)
<A>bort to main menu
<B>aud rate selection
<C>hat enable/suppress switch
<D>ebug switch
<E>cho to screen switch
<F>ile grab
<I>nformation
<M>odem mode
<N>etworking commands
<O>ther commands
<R>einitialize modem
<S>et date
<U>ser Administration
e<X>it to MS-DOS
And here it is in detail.
-8-
III.4.a <A>bort
This command exits from the Sysop Menu, leaving you at the current
room prompt in CONSOLE mode. This command is equivalent to the
<M>odem mode command (III.4.i) if the user is a remote caller.
III.4.b <B>aud rate selection
This antiquated command allows you to set the baud rate of the serial
port to the value that you indicate. This command has some occasional
usefulness in certain debug situations, so it still exists, but the
typical System Operator should never have a use for this option.
III.4.c <C>hat enable/disable
This command acts as a toggle for Chat enabled/disabled. When Chat is
enabled, the System will display a 'C' somewhere on your Status bar, and
users using the <C>hat command will be able to page you. When the toggle
is off, users using <C>hat will be greeted by your NOCHAT.BLB file (see
Section I, HELP FILES). Aides using the .Aide Chat command can, however,
override this toggle. A Sysop who really, truly wants privacy can use
the +nochat option on the command line to shut Aides out (see Section
II.9.a of INSTALL3.MAN).
III.4.d <D>ebug switch
This toggle command alternately turns debug code off and on. Under
normal circumstances, this toggle should always be off. There is no
telling what it will do from version to version, and in general will be of
little, if any, help in isolating problems with your installation; it is
more of a programming aide.
III.4.e <E>cho to screen
This toggle controls whether any output goes to the screen when the
system is in MODEM mode. This option is, of course, inoperative while
the system is in CONSOLE mode.
III.4.f <F>ile grab
This command allows the Sysop to "grab" text files that are anywhere
on his disk system into his Held Message buffer. In essence, this gives
the Sysop an equivalent ability to a normal user's composing a message
offline and then uploading it. The Sysop may compose a message using
his or her favorite editor, and then <F>ile grab it into the Held
Message Buffer. However, there are more flexible and convenient ways of
doing this; see Section XII, Sysop Editor.
To be more precise, the <F>ile grab command appends the text file
(or as much as it can digest) to the Held Message Buffer, thus allowing
construction of messages from several sources. Furthermore, none of the
other contents of the Held Message are disturbed. Therefore, you can
begin writing a message using Citadel-86, hold the message, <F>ile grab
something, and continue onwards.
III.4.g <I>nformation
This command provides information on the current version of Citadel-86
that you are running. The information is provided in the following format:
Citadel-86 VM.mm
Net Version N.n
Commands version O.ooo
Ctdlcnfg.sys version Q
-9-
"Citadel-86 VM.mm" is the same version that is printed on Carrier Detect
to users. The "M" digit indicates the Major Change that Citadel-86 is at
("1" was simply a version that worked under MS-DOS, "2" was the addition
of C86Net, "3" the addition of Floors). The "mm" digits indicates changes
made to Citadel-86 that provides normal users with substantial new
capabilities. Typically, "mm" does not change for new Sysop capabilities,
cosmetic changes, or the like; it's really nothing more than a gross
indicator of the version.
"Net Version N.n" indicates the network capability of Citadel-86. "N"
indicates any Major changes to the network (the first version of C86Net
did not have a number [boy, was it bad!], the second version was "0", and
the current is "1"). Due to the expandable nature of C86Net, "N" will
probably never change again. "n" indicates Facility additions. The
association of "n" to Facility addition is documented in the INCREM.* files
(which will be described shortly), and detailed in NETWORK3.MAN.
"Commands version O.ooo" tells the real story behind what version you
are running. "O" is the Enhancement version, and is incremented whenever
Citadel-86 is enhanced with a new command or appearance which does not
require a change to the "Citadel-86 VM.mm" version. "ooo" is the Fix
version, and is incremented whenever a bug is fixed or another internal
change takes place. "O.ooo" values are, again, documented in the INCREM.*
files.
"Ctdlcnfg.sys version Q" tells what version of CTDLCNFG.SYS the system
is at. Typically, this value is only incremented for Major Releases.
So what are these INCREM.* files? These files, available on Test
System (ask the Sysop for access to them), and possibly other systems,
document the changes made to Citadel-86, albeit very tersely. The format
of the documentation is:
<version change> <date> <description>
<version change> usually refers to the Commands version, although it
can refer to any of the version information in the Sysop's <I>nformation
command. <date> is when the version change was written/released.
Description is the terse description of what occurred to force the change
in version; when it is "???", it means that the Sysop was programming in
his sleep again and forgot what he did (here we take a deep breath ...).
Occasionally you will be referred to other files documenting changes in
detail.
The INCREM.* files constitute the most reliable information on
upgrades to Citadel-86, short of asking Test System's Sysop himself.
Since he is a very grumpy person (born that way, you see), and is not
adverse to biting off the heads of anyone who comes near, it is better
to peruse these files once you have access to them.
III.4.h <M>odem mode
This command returns the system to MODEM mode. If you have logged in
at the CONSOLE, it is NOT a good idea to use this command until you have
logged out, and since a normal Termination at the console will cause
the system to go into Modem mode, this is only useful when not logged
in.
-10-
III.4.i <N>etworking commands
This option takes you to a submenu that is only available on systems
that are using the Network facilities (see II.5.d of INSTALL3.MAN and all
of NETWORK3.MAN). Since NETWORK3.MAN should explain this menu in detail
(although perhaps not with the level of organization desired), we shan't
go any farther here.
III.4.j <O>ther commands
This option will deliver you to another submenu that is covered in
Section VII, OTHER COMMANDS MENU.
III.4.k <R>einitialize modem
This option allows you to reinitialize the modem.
III.4.l <S>et date
This function lets you set the date of the system. This is currently
disabled.
III.4.m <U>ser Administration
This option leads to another menu system, which is concerned with User
Administration duties. See Section III.6.
III.4.n e<X>it to MS-DOS
Finally, this command should be used to take Citadel-86 down
gracefully. The current user is logged out if present, and the system
will then attempt to deactivate itself.
III.5 Undocumented Sysop Menu Commands
There are always one or more undocumented commands floating around in
the Sysop Menu. These are, without exception, debug commands for use by
the programmer(s) of Citadel-86, and are not guaranteed to exist from one
version to another of Citadel-86. To expand even more upon this
frightening thought, the safety and integrity of your systems are not
guaranteed if you start screwing around with these options.
So don't.
III.6 User Administration
Starting with Citadel-86 V3.14, those Sysop level commands dealing
with various user privileges have been moved to their own menu, due to
overcrowding of the main Sysop Menu. These options, as noted above, are
reached from the Main Sysop Menu via the <U>ser Administration command.
(USEROPT.MNU)
<A>dd new user
<D>oor privileges switch
<E>ndless User (permanent account)
<F>ile privileges
<K>ill account
<N>et privileges switch
<P>rivilege switch (aide set/clear)
<T>wit switch
e<X>it to main sysop menu
-11-
III.6.a <A>dd user
This option lets you add new users to your system without logging out
of the system yourself. This is particularly useful for closed systems,
especially when the sysop is performing maintenance from remote and is
utilizing the remote sysop functionality. The process is as if a new
user were actually logging in, but after the normal questions are asked,
the sysop is asked if the new user should be given door and, if
appropriate, network privileges.
III.6.b <D>oor Privileges
Each account on your system may be set to have, or not have, Door
privileges. A Door is a program, typically run from a BBS, which allows
the user to do something. Citadel-86 Doors capability is detailed in
Section XIII of this manual. A user must have Door Privileges, assigned
using this option or via the Configuration file default (CTDLCNFG.SYS),
in order to use Doors on your system.
III.6.c <E>ndless User (permanent account)
You may set any account on your system to be permanent. This means
that it will not be automatically reused when new users log in and old
users don't log in for a long period of time (normally, old accounts,
if not used for a long time, will be recycled). The only problem is
if you should set every account to being permanent, then old accounts,
even though permanent, will be recycled.
An important implication is if you set a significant amount of accounts
to be permanent, the scroll time on the other (temporary) accounts will
become noticeably faster.
III.6.d <F>ile Privileges
File privileges (permission to download files) may be set using this
switch.
III.6.e <K>ill Account
The time-honored function, Kill account, is accessed by typing K at
the Sysop Menu. Please don't kill the account of the person currently
logged in. Besides being rude, it won't work.
III.6.f <N>etwork Privileges
If you are running a network Citadel-86, you may use this option or
the option in the Network Menu (see NETWORK3.MAN) to assign Network
privileges to your users. See NETWORK3.MAN for full details.
III.6.g <P>rivileged switch
The creation of those drudges, Aides, takes place through this
command. Anyone who is forced to become an Aide should also be forced
to read AIDE.HLP (conveniently written in pidgin Swahili), which details
most of the Aide capabilities. As noted, Aides given the system password
will gain access to this menu.
III.6.h <T>wit Status
First, a caveat: this was added reluctantly and may go away some day.
Anyone who has been given Twit status no longer may save messages -- but
they won't know it.
III.6.i e<X>it
This option returns you to the Main Sysop Menu.
-12-
IV. USER LEVELS
IV.1 Intro to User Levels
Citadel-86 (and related systems) are often popular with users because
they do not have the superfluous user levels that many other types of BBS
software have. We believe that this lets the user feel a little more free
with the system; the lack of direct control makes them willing to partici-
pate in the system earlier.
However, this does not mean that Citadel-86 completely lacks in user
levels. Citadel-86 uses the same 3-level hierarchy that came with the
original CP/M Citadel. At the bottom is the normal users, with the usual
privileges of reading and writing. Next comes the Aides, who are users
with certain caretaker powers. Finally, the Sysops and remote sysops,
who can do a little more.
IV.2 Normal Users
Normal users are created, as you might guess, by simply logging in.
They may read, write, and upload to all rooms they have access to.
IV.3 Aides
Aides are created using the <P>rivilege switch on the User
Administration Menu (see Section III.6.g). Aides are users who act as
caretakers for the Sysop. Their abilities and methods are summarized in
AIDE.HLP and AIDEFLR.HLP as well as here. They have access to the
private Aide> room.
IV.3.a Message Manipulations
This section covers the capabilities of aides in relationship to
message management.
IV.3.a.1 Message Deletion
Aides may delete any message in the system with the exception of
messages in Mail>. Messages which are deleted will be moved to the Aide
room, and will be preceded by a message from Citadel noting the name of
the Aide who performed the deletion.
Messages in Mail> which are deleted by Aides (Aides only have access
to their own Mail> room) remain in Mail> and show up in the Aide> room.
A message is deleted by <P>ausing the target message during printout,
and restarting message output by pressing 'D'. The message will repeat,
and then the system will ask if you wish to Delete the message, Move the
message, make the message into a network message (if this is a shared
room and the message is not a network message), Copy the message to
another room, or Abort the operation. Selecting D will cause the message
to be deleted.
IV.3.a.2 Moving Messages
Aides may move any message from its current room to another room. The
moved message will also appear in the Aide> room, along with a message
regarding who moved the message. Messages in Mail> may not be moved
successfully.
-13-
A message is moved just like a message is deleted, by selecting 'M'
when the system asks if you wish to Delete, Move, or Abort the operation.
The Aide is then asked which room to move the message to. If one or more
messages have been moved since the system was brought up, an empty
Carriage Return will put the message in the last room a message was moved
to. The Aide does not need to type the entire name of the room to move
the message to; a partial name is sufficient, so long as it is unique
within the system.
Moving a message to a net room from a non-net room will cause the system
to ask the Aide if the message should be netted. Moving a message to an
archived room does not cause that message to be archived. Moving a
message to an anonymous room does not cause that message to become
anonymous.
IV.3.a.3 Copying Messages
A message may also be Copied using the same command sequence as above.
A copied message is created by simply allowing both rooms to reference
the message, unless the target room is a shared room while the originating
room is not, and the message is to be netted.
IV.3.a.4 Making a message into a Network message.
A non-shared message may be made into a shared (network) message by
selecting the 'N' option after using the <P>ause-D sequence. When the
Aide selects this, the system reads the message in and then saves the
copy as a shared message. The original is silently deleted. This
process, while eating a little extra space, will ensure the message is
netted to all sharing systems.
IV.3.b General Aide Commands
This section covers various general Aide commands. All of these
commands are exercised via .Aide <command>.
IV.3.b.1 Room Elimination
Aides may kill any room in the system, with the exception of the
Mail>, Aide>, and #baseRoom rooms. A message recording this fact will be
placed in the Aide> room.
A room is killed by an Aide by being present in that room and execut-
ing the .Aide Kill command.
IV.3.b.2 Empty Room Deletion
Aides may execute a command that deletes empty, temporary rooms from
the system. A message will be left in the Aide> room listing the rooms
deleted by the command. (All directory and shared rooms are permanent
rooms and therefore not subject to the effects of this command.)
The .Aide Delete command is used for this purpose.
IV.3.b.3 Room Editing
Aides may edit the rooms of a system, with the exception of the Mail>,
Aide>, and #baseRoom rooms. See Section V. ROOMS for more on these
actions. To edit a room, either <A>ide or .Aide Edit room will allow you
to edit the room. However, Aides may not set the full range of attributes
associated with a room; Section V should cover this in full.
-14-
IV.3.b.4 Message Insertion
An Aide may insert the last message deleted into a room. The .Aide
Insert message command allows this.
IV.3.d Floors
This section covers Aide capabilities as related to floors. All of
these commands are accessed through the command sequence ;Aide <command>.
IV.3.d.1 Floor Creation
Aides may create floors at will. New floors are placed in the first
empty floor slot, and there is no arbitrary limit on the number of floors
in a system. Floor names may only be 19 characters in length, and each
must be unique within the system of floor names. Floors may not be
created while in the Aide>, Mail>, or #baseRoom rooms, because the room
that a floor is created in will automatically become a room on that floor.
;Aide Create-floor creates a floor.
IV.3.d.2 Room Moving
Aides may move rooms from one floor to another, with the exception of
the Aide>, Mail>, and #baseRoom rooms. The Aide should be in a room that
is on the floor that the rooms should be moved to. Once the command is
completed, a message will be placed in the Aide> room detailing what rooms
have been moved where.
The command is ;Aide Move-rooms. The system will prompt for the names
of rooms to be moved to the current floor. Room names must be specified
in full.
IV.3.d.3 Floor renaming
The ;Aide Rename-floor allows an Aide to rename a Floor. The name must
be unique amongst the floors.
IV.3.d.4 Floor Killing
Aides may delete Floors. When this command is executed, the current
floor is assumed to be the target; the #baseFloor floor may not be killed.
The Aide will be asked if the rooms on the floor should be killed outright,
or placed on the #baseFloor.
The command is ;Aide Kill-floor.
IV.3.e Aide Command Summary
.Aide Delete empty rooms
.Aide Edit current room
.Aide Insert pulled message
.Aide Kill current room
;Aide Create floor
;Aide Delete empty floors
;Aide Kill floor
;Aide Move rooms to floor
;Aide Rename floor
-15-
IV.3.f Possible extra privileges
Depending on the configuration of the system, Aides may have additional
privileges that the users do not.
First, Aides may be the only users able to create new rooms.
Second, Aides may be the only users able to use the Mail> room.
IV.4 Sysops
There are potentially two different Sysops.
First, and always, there is the person at the system console. Certain
Sysop abilities can be executed without being logged in, notably the
Sysop Menu functions (Section III: SYSOP PRIVILEGED FUNCTIONS); the rest,
what few there are, require that the Sysop be logged in.
Second, when the #sysPassword parameter is in use, an Aide in
possession of the system password may use it to become a remote Sysop.
A Remote Sysop has most of the capabilities of an Aide at the System
Console, including access to the entire Sysop Menu, and complete control
of room editing (see Section V: ROOMS).
The only other options available to a Sysop that are not available to
Aides, outside of the Sysop Menu, follow.
IV.4.a Message Journaling
Sysops may select individual messages to be placed in normal MS-DOS
text files for future reference; this is called Journaling. This command
is executed by <P>ausing the target message during output, and restarting
it with a 'J'. The system will then ask for the name of a file to place
the text of the message in. If the Journaling command has been used
before, then an empty Carriage Return will cause the message to be
appended to the last file specified.
IV.4.b Directory Journaling
Sysops may Journal the directories of directory rooms. The process is
the same as Message Journaling.
IV.4.c Copying Files
Sysops may copy files into directory rooms from the room prompt. The
Sysop should be in the directory room where the file is desired to reside.
The command sequence is .Aide Addfile. The sysop will be prompted for a
full pathname. If the file is found, it will be copied into the directory
associated with this room, and then the sysop will be prompted for a
description of the file. If no description is entered then no changes
will be made to FILEDIR.TXT (which makes this convenient for updating
files). If a description is entered, FILEDIR.TXT is updated and a message
will be left in the room in just the same style as a normal file upload
would leave a message.
Since DOS's COPY command is used to execute this command, very large
systems and systems with a limited amount of RAM may have difficulty
running this command.
-16-
V. Rooms
V.I Room Attributes
Rooms are the basic foundation of the Citadel-86 system, acting as the
main organizer and container of the messages of the system; the collection
of rooms of a Citadel-86 essentially constitutes the character of the
system.
Rooms on a Citadel-86 can have a number of attributes associated with
them, each working independently, and most do not interfere with each
other's usefulness. With the exception of the first three rooms of a
system, there should not be any restriction on what rooms can have what
attributes. So let's discuss what a room can do, besides contain messages.
In order to set any of these attributes, the room must be edited by
an Aide. If the Aide is accessing the system remotely and has not used
the Remote Sysop Password, then the Aide's powers are restricted, while
an Aide at the system console or a Remote Sysop's powers are not
restricted. In the following discussion, the option letter used to
activate or deactivate an attribute is given along with the explanation
of the feature.
V.I.1 Room Archival
<A>rchive status, a Sysop-only option, allows the Sysop to save all the
messages that are entered into a room, whether locally or via the network,
to a normal MS-DOS text file (formatted for a 80 column user). When this
option is activated, the Sysop is asked for a filename that will contain
the saved messages. This file may reside anywhere on the system. An
initial archive of the room will take place, and thereafter all messages
entered into this room will be saved to the file upon entry. This includes
messages received over C86Net.
Messages that are deleted from the room will NOT be deleted from the
archive file, and, similarly, messages that were entered in another room
and subsequently moved to the archive room will not be saved to the
archive file, except on initial archive.
V.I.1.a File Limits
During the sequence of making a room into an Archived room the sysop
will be asked if they want to set a size limit on the resulting archive
file. If you answer with a non-zero answer, then the system will attempt
to enforce a limit on how large the archive file will grow, using your
answer and multiplying it by 1000. When the resultant file exceeds the
limit specified, Citadel-86 will change the file's name to
"filename.<digits>" and then continue archiving to the original file name.
"digits" is selected by starting with 0 and incrementing until a filename
is found that does not exist yet on disk. In this manner a sequence of
files of roughly the same size will come into existence, mirroring the
room but in manageable chunks.
Since DOS cannot handle files with more than one period in their
name, sysops should select names without suffixes when using this feature.
This limit does not apply during initial room archival.
-17-
V.I.1.b File Names
Room archive filenames can be slightly more abstract than has been
indicated thus far. Filenames may carry embedded indicators of the
current month and year which will change as the months and years pass.
In other words, you can use a couple of macros in the name of room
archive files if you wish. The supported macros are currently
%y : This is the last two digits of the current year
%m : This is the first three letters of the current month
So, for instance, you could have a room archive name of
"poetry\poems%y.%m". Messages left in the room during March of 1990
would then be written to the file "poetry\poems90.mar", while those left
in August of 1991 would be written to the file "poetry\poems91.aug".
This ability should make management of room archive files a bit easier to
deal with.
V.I.2 Backbones
Please see NETWORK3.MAN for the use of the <B>ackbone status option.
This is a Sysop only option.
V.I.3 Directory status
Please see Section VI.y for details on the upload/download capabilities
of Citadel-86 that are made available through the <D>irectory status
option of room editing, a Sysop only option.
V.I.4 Information Editing
The <E>dit Information option allows any aide to edit the information
associated with this room. If Information already exists for this room,
the aide is asked if he or she wishes to edit the already existing
Information. In any case, the Aide is placed in the Citadel-86 message
editor and allowed to create new Information for the current room. If
the Aide should <A>bort the entry, then any prior Information on the room
is not disturbed; a <S>ave will replace prior Information with the
Current Information, including updating the CTDLINFO.SYS file resident
in your #ROOMAREA directory.
V.I.5 Innominate status
The <I>nnominate option allows any aide to designate a room to be an
Anonymous room. A room which has been designated Innominate behaves
differently from a normal room in the following ways:
o All messages entered in it locally are saved with the author's name
being "****". Editing a room back to normal ("authored") status does NOT
restore those messages' authors.
o Echo to screen is suppressed during message entry in Innominate rooms.
V.I.6 Lure users
Any aide may use the <L>ure users option to, in effect, invite any
user into any room except the Aide room. The user(s) specified are given
access to the room being edited. If they already had access, no change
is made to their status.
-18-
V.I.7 Moderator
Any room may have one moderator attached to it. A moderator is
effectively an Aide for that single room, able to edit the room and delete
messages. The user specified does not need any special privileges. Any
Aide may change the moderator setting for a room via the <M>oderator
command.
V.I.8 Name Change
Any Aide may change the name of a room via the <N>ame change command
while editing a room. There are a couple of constraints on the name of a
room.
o It must be 19 characters or less long. A zero length name IS viable,
but be aware that if the room ever becomes empty, there is no way to
access that room.
o It must be unique within the system.
V.I.9 Only Invitational
A room can be set to one of three status settings insofar that users
are allowed access to it. A room may be Public, in which case all users
have access to the room. If a room is Private, then all users that know
the name of the room may gain access to the room simply by typing ".Goto
FULLROOMNAME". (See Section V.I.9 for the Public/Private settings.)
Or a room may be Invitational. Users can only gain access to such a room
by being invited (i.e., <L>ured -- see Section V.I.5). Even if they know
what the name of the room is, they cannot successfully .Goto it.
A room can be either Public, Private, or Invitational, but not any
combination. It would perhaps be more logical to combine the <O>nly
Invitational command (this one), with the following command, <P>rivacy
status.
V.I.10 Privacy Status
Any Aide may set the <P>rivacy status of a room. Section V.I.8
provides an adequate explanation of privacy and rooms.
V.I.11 Temporary Status
Any Aide may set the <T>emporary status of a room. Any room may be
either Temporary or Permanent. A Temporary room is a room that may be
deleted by any of three events when it becomes empty (i.e., no messages
in the room):
o An Aide executes a .Aide Delete empty rooms command;
o The number of rooms in use in the system reaches #MAXROOMS and another
room is created;
o The system is reconfigured (see Section ??? [installation manual] on
the CONFG program).
A Permanent room may only be deleted by a specific .Aide Kill Room
command.
All Directory and Shared rooms are Permanent. Otherwise, if Permanent
status is desired for any room, it must be explicitly set by use of the
<T>emporary status command.
-19-
V.I.12 Shared status
The Sysop may use the <S>hared status command to affect the current
room's Network status, including which systems to network with and which
should not be networked with. Please consult NETWORK3.MAN for more
details. A Shared room is Permanent.
V.I.13 Upload/Download status
The Sysop may use the <U>/D status command to change the upload/down-
load status of a directory room. See Section VI.y for more details on
this command.
V.I.14 Withdraw Invitations
On occasion, users need to be evicted from a room. The <W>ithdraw
Invitations command allows any Aide to evict users from a room. This
command is certainly not useful for Public rooms, and not entirely
effective for private rooms, but can be very useful for Invitational
rooms.
V.I.15 Network Downloadable
The Sysop may use the <Z> command to designate whether or not a
directory room may be accessed via the network for download purposes.
See Section VI.y for more details on this command.
V.II Other room editing commands
There are two other commands that an Aide may use while editing rooms.
The first is <V>alues, which gives the current positive attributes of the
room. The second is e<X>it editing, for exiting from the editing process.
When substantive changes have been made to a room, a message is left in
the Aide> room detailing the changes made.
V.III Three exceptions
Three rooms cannot be modified through editing (or any other process),
and these rooms are
o #baseRoom>. This room is always a Public, Permanent room.
o Mail>. This room is a very special room, but essentially boils down
to Public, Permanent, with some Shared capabilities.
o Aide>. This room is a Permanent, Invitational room, with Invitations
automatically issued to Aides.
VI.UPLOAD/DOWNLOAD CAPABILITIES
VI.I Origin
According to what rumors we have gathered from Seattle, the origin of
Citadel, the original Citadel installations did not have any upload/down-
load facilities; they were pure message systems. Reportedly, "directory
rooms" were kludged in at a later time as an afterthought by an early
author.
-20-
They must be one of the more successful kludges in history. Directory
rooms, which serve as "windows" to the host operating system's file system
in Citadel-86, have proven to be extremely useful constructs, allowing
access to specified parts of MS-DOS's file system while not disrupting
Citadel's structure with such excess baggage as "file sections". The room
structure allows easy division of files into their subject areas, and this
integration into the room structure offers the additional, and very
useful plus, of allowing conversation relevant to those files to coexist
within easy reach of the user. Compare this to, say, Fido or RBBS, which
force you to go from a file section to a message section in order to
discuss a file, and the advantages of Citadel (at least to this author)
become obvious.
VI.2 Creation
A directory room is created by editing an existing room to directory
status. This is an operation that only a Sysop can do, using the .Aide
Edit command. Once at the room edit prompt, the Sysop should select the
<D>irectory option.
Citadel-86 will ask if you wish to activate a directory for this room,
and you should of course answer yes. It will then ask for the name of a
directory to associate with this directory room. You should answer with
the name of a normal MS-DOS directory. You may specify a drive, and the
directory may be a subdirectory of the current directory, or it may be
an absolute specification; there is no limit. If you simply hit a
Carriage Return, Citadel-86 will assume that you mean the current
directory on the current drive.
If you specify a directory that does not exist, Citadel-86 will ask
you if it should be created, and if you answer affirmatively, it will
be created. Otherwise, you will be asked again.
Finally, the system will ask if the room will accept uploads and allow
downloads (these options can be accessed while editing rooms separately
by selecting the <U>/D option). This gives you some control over the
behavior of the directory room. When either of these options are "off",
only a sysop can upload or download or read the directory, depending on
the option.
A file room is identified by the character at the end of the room name.
Normal rooms have a ">". Normal directory rooms have a "]", while
directory rooms which are also shared with other systems (which has no
meaning insofar as the directory goes) have a ":".
VI.3 User commands
The user is provided with two sets of commands for accessing the
directory of a room.
VI.3.i Content listing
When a listing of the files in a room is requested, only the visible
files are listed. Hidden files and subdirectories in the directory are
not listed.
-21-
There are two commands for displaying a listing of the files accessible
in a room. The first command is
.Read Directory <file-spec> <date-spec>
If <file-spec> is empty, then all files are listed; otherwise, only
those files matching <file-spec> are listed. For a full explanation of
<file-spec>, see X.3.c.
<date-spec> allows the user to specify files matching <file-spec> to
also meet a date requirement. "<" is used to specify files dated before
a given date, while ">" is to specify after the given date (inclusive).
If the user does not specify a date after the ">" or "<", then the date
of their last logon is used.
Files are listed for the user as
<name> <block size>
where block size is the size of the file in 128 byte blocks, which, not
coincidentally, is the size of blocks used by XMODEM for file download.
The second command is
.Read Extended-directory <file-spec> <date-spec>
which allows the user to see file descriptions "attached" to files.
Files are listed in one of two formats. The first (and original) format
is
<name> <size> | <description> <file date>
while the second (and more recent) format is
<name> <size> <file date> <uploader identification>
| <description>
Either display is formatted to the user's display. Each file starts
on a new line, thus providing a readable format. (Users can select which
display they want via .ECZ.)
The descriptions for the files in a room are kept in a normal text file
named FILEDIR.TXT, which must reside in that directory. If the sysop
wishes to create file descriptions for a set of files, the format of
FILEDIR.TXT is simple, and it is
<name><one or more spaces><description on one line>
. . .
FILEDIR.TXT must be in alphabetical order (case-insensitive) in order
to function correctly. Each description may be no more than 7K long, and
must reside on the same line as the name.
The FILEDIR.TXT for any given directory room is updated by Citadel-86
whenever a file is uploaded to that directory room, thus minimizing the
maintenance chores of a Sysop with numerous directory rooms.
-22-
You may place comments in a FILEDIR.TXT simply by placing before each
comment line a ';'. Since these comments are displayed to the user during
the use of .Read Extended, this lets the sysop embed informative messages
within the file directory, such as "These files are for Amigas only."
In FILEDIR.TXT, the above would be ";These files are for Amigas only."
You may scatter these comments about wherever you wish in FILEDIR.TXT.
Comments are the only exception to the sorting rule mentioned above,
Citadel-86 only prints such lines during processing and does nothing else
with them.
Finally, if there is a file missing from FILEDIR.TXT (or if
FILEDIR.TXT itself is missing), there is NOTHING to worry about. There
will simply be no file description displayed for the affected files.
Further, excess entries in a FILEDIR.TXT do no harm to the listing
(however, if you are fastidious you should research the Citadel-86 utility
CULLDIR.EXE).
The only weakpoint in FILEDIR.TXT is the fact that the entries must be
in alphabetical order. If they are not, file descriptions will not
display at all.
VI.3.ii File transfers
The second set of commands for accessing the directory of a room are
those concerned with uploads and downloads.
VI.3.ii.a Upload Protocols
There are three protocols supported for the upload of files, XMODEM,
YMODEM, and WXMODEM. While this subject is covered in the FILES.HLP
help file, we'll go over it here, too. (External drivers for uploads are
covered in section XV of this manual.)
The command format for uploading a file via XMODEM is
.Enter File or .Enter Xmodem File
The command format for uploading a file via YMODEM is
.Enter Ymodem File
The command format for uploading a file via WXMODEM is
.Enter Wxmodem File
After typing in any of these commands, Citadel-86 will prompt the user
for the name of the new file. If a file already exists by that name in
the directory, the upload is aborted at this point; if the file name is
not acceptable for any other reason (for instance, the name is special to
DOS, such as CON:, or the user has attempted to specify a drive name),
the upload is aborted.
Once the filename is accepted, Citadel-86 will prompt for a description
of the file. If the subsequent upload is a success, the directory's
FILEDIR.TXT is updated with the name and description of the new file.
Citadel-86 will then ask if the user is ready to start the upload. If the
user responds negatively, the upload is aborted; otherwise, the chosen
protocol starts in receive mode.
-23-
YMODEM's BATCH mode is NOT supported for uploads by Citadel-86, for the
reason that it would be very easy for a malicious user to abuse the system
through the upload of numerous files.
VI.3.ii.b Download Protocols
Four protocols are supported for downloads, XMODEM, YMODEM, WXMODEM,
and straight text transfers, which is the default transfer protocol
if neither of the other three are specified (unlike the upload command,
where XMODEM is the default). External protocol drivers for file
downloads are covered in Section XV of this manual.
Command format is
.Read [protocol] <Binaryfile|Textfile> [Formatted]
XMODEM is specified using <X>modem.
YMODEM is specified, of course, using <Y>modem. When downloading
files via YMODEM, only BATCH mode is available, even if only a single
file is to be downloaded.
WXMODEM is specified using <W>xmodem.
The Binaryfile and Textfile specifications are synonyms, being a
holdover from the CP/M days of Citadel. However, the Formatted option
can only be used with the Textfile option. If a file is requested using
the Formatted option, the file(s) requested (which Citadel-86 assumes to
be normal MSDOS text files) will be formatted to the user's screen.
Otherwise, the file is simply sent on a byte-by-byte basis to the user.
When an acceptable download command is entered, Citadel-86 will prompt
for a filename from the user, which can be a <file-spec> (see VI.3.iii).
If more than one file matches <file-spec>, then all those files will be
sent using the specified protocol. In the case of XMODEM, this will
probably be less than successful. A <date-spec> may also be entered
at the same time as a file spec, thus allowing the use of BATCH protocols
in combinations with file specs.
VI.3.iii <file-spec>
A <file-spec> for Citadel-86 can range from being a single file (like
"HELLO.TXT") to an ambiguous file specification in MSDOS format ("*.TXT"),
to a list of files mixing both single file specifications and ambiguous
file specifications. For example,
.Read Extended-directory *.MAN HELP.ME C*.HLP
would display all the files that match any of those specifications. Each
part of the specification should be separated from the next by one or more
spaces.
VII. OTHER COMMANDS MENU
VII.1 General Purpose
The purpose of the Other Commands submenu of the Privileged Functions
Sysop menu is to allow the Sysop access to commands that may be unique to
the installation of Citadel in operation.
-24-
VII.2 Citadel-86 Other Commands
Citadel-86 supports only three commands from this sub-menu -- a
haphazard effort, indeed.
VII.2.a Deletion
The <D>elete File option allows the sysop to delete any file in the
MS-DOS file system. Only a single file at a time may be deleted;
ambiguous file names are not supported.
VII.2.b Outside Commands
The <O>utside Commands option allows the sysop to run programs from
within Citadel-86 (but not concurrently). Since it is sometimes
inconvenient to take down Citadel-86 (e.g., from remote) in order to
execute some utility or program, this option is useful.
When this option is selected, Citadel-86 will write a temporary
CTDLTABL.SYS file (see INSTALL3.MAN, Section II.3.a) to disk, and then
prompt you for a command line. You may then attempt to run any program
that you wish from the command line, simply as if you were running from
the MS-DOS command level.
The DOS shell is accessible at this point by simply typing a carriage
return if you are the console; if you are running from remote, Citadel-86
will refuse to do anything, since just running the shell at this point
would disable the system.
If you should try to bring this installation up while Citadel-86
is up, you will (or should) find that the system won't come up. This
is because Citadel-86 generates a "lock file" during <O>utside command
execution. When you try to bring Citadel-86 up, it will check for the
existence of the file CTDLLOCK.SYS, and if found, the system will print
an error message and refuse to come up. In the rare instances that a
CTDLLOCK.SYS file exists when it shouldn't (for instance, losing power
while executing an <O>utside command), simply delete it and try to
bring Citadel-86 up.
VII.2.b.i Restrictions
There are two actions that you should avoid taking while using the DOS
shell from within Citadel-86.
First, do not delete any of the Citadel-86 data files. These are the
*.SYS files, such as CTDLMSG.SYS, CTDLLOG.SYS, CTDLROOM.SYS, etc.
However, you may delete or change the CALLLOG.SYS file (this was not true
in earlier versions of Citadel-86).
Second, do not run any of the Citadel-86 utilities which change the
nature of the Citadel-86 data files. These utilities include DATACHNG,
RECOVER1, EXPAND, RECOVER2, etc. You may run without fear those utilities
which only show various things, like CLOG, CLRAY, etc. In general, if you
are not sure, either take your Citadel-86 down or experiment on a small
test system.
VII.2.c View Calllog.sys
This option is only available if you have the Outside Editor parameter
defined (see INSTALL3.MAN). When this option is selected, the Outside
Editor is run using the full pathname of CALLLOG.SYS.
-25-
VIII. MISCELLANEOUS SUBJECTS
VIII.1 Wha....?
Like anything that grows through accretion rather than planning,
Citadel-86 has accumulated a clutch of features that don't really fit
into any category. So, rather than trying to create some categories
that don't really fit into the great plan of Someone Out There, we
decided to write a chapter with a central theme of mishmash that would
contain all those features that don't really fit anywhere in particular.
So, with no further shampoo ...
VIII.2 Chatty Questions
When you drop into <C>hat mode to talk to a user, you will be faced
with one question before you're actually allowed to communicate with
your victim. The question is:
Treat modem as dumb caller (if answering chat type 'Y')?
Denigrating as this may seem, it is an accurate question. There are
two ways in which you may find yourself in Chat Mode. The first is by
answering a Chat request by a user. Since the user has called your
board and is using it, it is very safe to assume the user's terminal
program is not echoing the characters coming from your BBS back to it;
i.e., the user is 'dumb'.
The second way you may find yourself is when you are using Citadel-86
as a terminal program via the <D>ialout command on the Sysop's Net Menu.
When you achieve a connection this way, you will automatically be dropped
into Chat Mode with the implicit answer to that question being 'N' -- that
is, Citadel-86 is to assume the system on the other end will take care of
echoing characters as necessary.
So why the question, you ask? Because occasionally you will call a
system and then find a reason to get out of chat while the other system
is still on-line, do something, and then get back into Chat to continue
your session. Though it is certainly true you can return to the Net
Menu, type <D>ialout again and be automatically dropped into Chat,
it's easier to just hit <C>hat at any room prompt, answer 'N', and
continue on your merry way.
VIII.3 Chat Capture
You, Chief High Sysop, have the ability to capture chats to disk if
you choose to do so. When you capture a chat, a warning will be printed
to both you and the chattee saying that the chat is being captured; when
you choose to stop capturing chat, another warning will be printed
indicating that the session is no longer being captured. In this way,
you cannot successfully be accused of capturing chat sessions without
warning.
You turn on chat session during a chat by typing ^R (Control-R). The
system will then attempt to open a file named CHAT.TXT, and if it exists,
the chat session should be appended to the end of that file. If the file
does not exist, it is created, and the resulting chat placed within.
Typing a second ^R will result in the file being closed and the chat
capture being turned off. If you leave the chat session, the capture is
automatically turned off at that point, and if you wish to continue
capturing the chat (say, if you had to pop out for a moment and then
returned), you must turn the capture back on again.
-26-
By a chat session, we mean both a normal <C>hat, initiated by either
you or a caller, and the chat sessions which are initiated by the <D>ial
System command of the Network Menu, on which there should be more details
in NETWORK3.MAN.
VIII.4 File Transfers while in Chat Mode
When calling other systems it's not uncommon to discover you wish to
grab a file from the other system, or send one of your's to it. Doing
so is quite easy in Citadel-86.
For either type of file transfer, however, you must make sure you
are in (on your own system) a directory room (see Section V if you aren't
sure what a directory room is). This only makes sense, of course,
particularly if you're sending a file to the other system. If you are
not currently in a directory room when you discover your need to transfer
a file either way, simply touch ESC, get to a room prompt (if you're not
at one already), and .Goto the file. If you have public directory rooms
available, you need not even be logged in. To get back into Chat mode,
you may either go back to the Network Menu (^L-N) and type <D>ialout,
or simply at the room prompt type <C>hat and answer 'N' to the question.
In order to download a file from the other system into your system,
first set up the other system to send you the file(s) you want. Then
touch the PG DN key on the keypad (NUM LOCK OFF!). The system should
prompt for a protocol to use, to which you answer with the correct
letter. If you have any external protocols installed you may select one
of those rather than Citadel-86's XMODEM, YMODEM, or WXMODEM. You
should then be prompted for a filename, and then the transfer will
commence. When finished, you'll be asked for a file description, and
then you'll be dumped back into Chat mode. NOTE: Do NOT try to use
YMODEM BATCH when grabbing files from another system! (Z-100s: Control-F
is equivalent.)
To upload a file from your own system to another, first make sure you
are in the appropriate directory room (i.e., the directory room which
holds the file to send). Set up the other system to receive your file,
and then touch the PG UP key. Citadel-86 will, as it did for downloads,
prompt for a protocol and then the file(s) to be sent. When the download
is accomplished you will be dumped into Chat mode. (Z-100s: Control-E
is equivalent.)
VIII.5 ESCaping Details of Chat Mode
On rare, rare occasion it is necessary to send an ESC while in Chat
mode. Yet, Citadel-86 specifically tells you that an ESC let's you out
of Chat! How do you get around this problem?
By using the '\' key first. When you do so, the system will pass the
next key you press through without any interpretation, including the ESC
key. (If you need to send a '\', send two of them.)
And one more detail: when <C>hat is used, an ESC from either the
caller or from the Sysop will cause the Chat session to end. When
<D>ialout is used, only the ESC from the system console will cause the
system to end the Chat session.
-27-
VIII.6 Typing at the Keyboard When the User is in Control
VIII.6.a Sysop Autodial
If your system becomes at all popular amongst the locals, you will
rapidly find yourself in the position where you cannot get onto your
machine whenever you like without committing foul and evil acts such as
pulling the plugs out of modems and that sort of thing. Since that tends
to lead to bad reputations and negative karma, Citadel-86 gives the Sysop
the ability to auto-dial him(or her)self; that is, you can tell the
system, while someone else is on, that you are next in line to use the
system. (aka "pulling rank".)
To do so, simply type ^T (Control-T) while the person using the system
is on. The next time that the system looks at the keyboard (which is
during <P>auses of output and other moments of the system waiting for
input from the user) it will note that the ^T has been pressed and
(usually) print out an acknowledgement to the system console only (the
user will not be aware that you are anywhere near ground zero). The
status bar, which we'll discuss sometime along the way here, if you
are using it, will also show that your ^T has been pushed.
When the foul user logs out of the system, the system should
immediately start beeping at you, once every ten seconds. If you then
hit anything on the keyboard, you get control of the system. After
2 minutes of beeping, the system will return its attention to the modem.
If you type ^T twice while the user is on, this feature will be
cancelled.
If you type ^T when no one is on the system, the system will go into
CONSOLE mode.
VIII.6.b Chat Mode
You can toggle Chat Mode while a user is on and in control simply
by typing ^Z at the SysConsole. Your status bar (see VIII.7) should
reflect the change. Please note typing ^Z during downloads and uploads
won't take effect until the operation is finished.
VIII.6.c Echo Mode
You can toggle the Echo Mode (see the <E>cho toggle of the Sysop's
Menu) by typing ^E while the user is on. You'll be able to tell if
this has taken effect because the display will stop or start when you
type the ^E.
VIII.7 Denizens of the Status Bar
Citadel-86 has a status bar. This status bar gives you a vague idea
of what's going on with the system, using various special messages during
system initialization, and then a hint now and then about who's on. The
location of the status bar depends on the machine that Citadel-86 is
running on. If it is a PC Clone, it occupies the second line from the
top of the screen. If it is a Zenith Z-100, it occupies the 25th line of
the screen.
-28-
The status bar should always have
"Citadel-86 Vx.xx: "
showing. What shows up after that depends on the state of the system.
Special messages appear right after it, but they only show up when the
system is coming up. Here's a generic representation of the status bar
when the system is in normal mode:
"Citadel-86 Vx.xx:<name of user><time of carrier>[<Chat sig>][<^T sig>]"
"Chat sig" is a capital "C", and only shows up when you have Chat mode
on. ^T sig is a "^T", and only shows up when you are next in line to use
the system. An 'E' may also show up, indicating Echo is OFF (rather than
the more intuitive ON).
Additionally, you may also have a clock on your status bar. This
clock, maintained once a minute (except during long reads, downloads, or
network sessions), is displayed only if you have the status bar active,
and will appear on the far right hand side. You may disable this clock
by adding "#CLOCK none" to your ctdlcnfg.sys (see INSTALL3.MAN).
VIII.8 Modem disabling
You may have noticed that when you took control of the system by
pressing ESC, the DTR light on your modem went out. Or you may not have
noticed. But it did, or should have. This leads to that age-old
philosophical question, "When does this happen?" Well, DTR comes down
(or, more generally, the modem is disabled) when the Sysop takes control
of the system and there is no carrier. If there is carrier, then
connection is maintained, even when coming out of the Chat mode initiated
by the <D>ialout.
VIII.9 BADWORDS.SYS
Usually, there is little need to actively censor Citadel users.
However, on rare occasion you will run into local ruggies (twits, jerks,
etc) who are expressly intent on destroying your system. Although
it is usually more effective to deal with the parents of such village
idiots, or with the law when they are friendly to the local BBS
community, Citadel-86 does provide a tool for censoring and (we hope)
discouraging such children.
If the file BADWORDS.SYS exists in your #ROOMAREA directory,
Citadel-86 will attempt to read it to form a list of forbidden words.
Any message entered by a non-aide will not be saved in the message
base when it contains one of these bad words. BADWORDS.SYS should
be a simple text file. All but the first two lines will contain one of the
forbidden words (or phrases, if you like). Please note: odd results can
happen with small words, because this works just like the message editor's
Replace function. For instance, if "frog" were listed in that file,
any message containing the word "froggie" would also not be saved.
The first line of BADWORDS.SYS is reserved for an "icky" level. This
level indicates how many times a user may use one of the forbidden words
before the system will drop carrier on them. You indicate this icky
level by simply putting the number there, like "5". If you were to
put "0" at the top of the file Ctdl would kick the offender off on the
first offense.
-29-
The second line of BADWORDS.SYS, if non-blank, is the name of the file
all sub-standard messages will be written to. If you don't want
sub-standard messages saved anywhere, then just leave it blank.
Any user kicked off the system for offending against BADWORDS.SYS
will also be marked in CALLLOG.SYS by the letter 'B' following their
name.
VIII.10. Massive Privileges
Sometimes you wish you could give everyone one of the privileges -- or
take it away from everyone. You can do this now in certain circumstances.
When you are prompted for a user name, you can reply with either "Citadel"
or "*". Either means you want to apply the privilege to all of the
accounts. You'll then be asked if you want to give the privilege to
everyone. If you demur, then you'll be asked if you want to take it away
from everyone. If you again demur, you've effectively aborted the
operation. Otherwise Citadel-86 will apply or take away the privilege
from everyone.
This works for the following privileges:
(User Menu -- ^L-U)
<D>oor Privileges
IX. SEA'S ARC files
IX.1 DeArcing
Citadel-86 allows users to selectively deARC and download files from
ARC-generated files if the Sysop so desires.
There are several considerations for the Sysop to keep in mind as s/he
decides whether or not to enable these commands, including
a) DeARCing files takes valuable system time;
b) DeARCing files takes space which the system may not have available;
c) Damaged ARC files can sometimes hang a deARCing program; occasionally,
they can even damage disk systems (it's happened to me!);
d) This ability may be vulnerable to system crashers in unforeseen ways;
e) <myriad other disasters for the unprepared> ...
Citadel-86 has implemented this ability by executing a deARCing program
of the Sysop's choice on the file specified by the user. The files are
deARCed into a temporary directory that Citadel-86 creates and deletes as
needed. When deARCing and downloading is finished, Citadel-86 will delete
all files that were deARCed, thus not taking up any permanent storage on
the system. However, the Sysop must keep in mind that if there is not
enough temporary storage available, the system could still be hung,
depending on what the deARCing program does when it hits a disk out of
space limit; further, Citadel-86 does not detect when a failure occurs
(except for no files matching the deARC mask).
To enable the command, create a normal DOS text file named DEARC.SYS in
your #ROOMAREA directory. Citadel-86 expects that the contents of this
file will be a single line that will name the program that you wish to use
for deARCing. If the program is on your PATH, then you need not specify
the path to the program.
-30-
Citadel-86 makes the assumption that your deARC program's final two
arguments will be, respectively, the name of the file to be deARCed
(including the path, if any) and the "mask" (i.e., "*.*", "*.doc", etc.).
This is the standard format for SEA's ARC, and so I hope that it will
remain more or less a standard.
During testing, I have noted that
pkxarc
works just fine, as does
unpack
Unpack is Borland International's deARC program, which is distributed
with Turbo Pascal 4.0 and Turbo C 2.0.
Oh, the Citadel commands to do this sort of thing? (Read the help
files.) There is one.
.Read Archive Binary-files
This will prompt for the name of one ARC file (with or without the ARC
extension), and then will prompt for the deARC mask. A Carriage Return
for the deARC mask will result in "*.*". The system will then ask the
user to wait for a moment, and then (attempt to) deARC the file using
the mask. Once finished, it will send all files to the user via ASCII.
If the user wishes to use a protocol, they may. For example, YMODEM
BATCH could be used this way:
.Read Ymodem Archive Binary-files
Downloading files this way via YMODEM or XMODEM will be tracked by the
Download time limits, if you are using them (or at least so I hope).
'T' and 'F' are synonyms for 'B' in the above.
IX.2 ARC Integrity Checks
Citadel-86 is also capable of integrity checks on newly uploaded ARC
files. In order to enable this capability, the sysop must modify the
DEARC.SYS file described in IX.1 by adding a second line. Much like
deARCing files, the second line also specifies a command line to be used
for performing a file integrity check.
However, the sysop MUST specify a program which returns an ERRORLEVEL
of 0 when the integrity check succeeds, and non-0 when the check fails,
or this feature will fail. Fortunately, ARC V6 does precisely that, so
if you choose to use ARC for file integrity checks, you shouldn't have a
problem. So, as an example, to use ARC as the file integrity check
utility, you'd simply have the line
ARC t
since 't' is the file test command.
Do NOT* specify a BAT file as the file check utility!
-31-
The integrity check takes place after the upload has been completed.
The name of the file is checked, and if the extension is .ARC, your
Citadel-86 will, if enabled, ask the user if the upload should be checked.
If the user agrees, the check is performed. If it succeeds, the user
is prompted for a description. If it fails, the user is asked if the
upload should be aborted. If the user assents, the file is deleted; if
they wish to continue, they are then prompted for a description.
The sysop should bear in mind that some flawed ARC files can
cause their computer to hang during a file integrity check if they are
using ARC V5. ARC V6's stability in this regard is not known by this
author.
If you wish to use a test utility which requires command line arguments
AFTER the name of the file to be tested, this can be accomplished. Much
like the External Protocol (Section XV), if you place "%g" somewhere in
your integrity check command line, it will be replaced with the filename
to be tested. For instance, ARCE's format for testing files is "ARCE
<filename> /T". So a good integrity check command line (i.e., second line
in DEARC.SYS) would be
arce %g /T
If you do not use '%g' in your integrity command line, then the filename
to be test will simply be appended to the end of the command line, just as
it is for deARCing.
X. PKWARE's ZIP files
X.1 DeZIP
Citadel-86 is also capable of handling the ZIP files generated by
PKWARE's PKZIP utility. Procedures for handling ZIP files are nearly
exactly the same as for SEA's ARC files, as are the warnings. In fact,
the only difference is that you must create a new file named DEZIP.SYS,
rather than DEARC.SYS, in your #ROOMAREA directory, containing the command
to DeZip files.
pkunzip -x
seems to work just fine, if, of course, you have PKUNZIP.EXE available
somewhere.
X.2. ZIP Integrity Checks
Again, as with SEA ARC files, you may optionally enable integrity checks
on uploaded files by modifying DEZIP.SYS with a second line specifying the
file check. PKUNZIP -t seems to work just fine. This check, if enabled,
will be performed on files uploaded with a .ZIP extension. Again, you may
use '%g' to cause the filename to appear in a place other than the end
of the resulting command line, although we are not aware of any test
utility for ZIP files which uses this sort of command line.
XI. ZOO Files
XI.1 DeZOO
Like ARC and ZIP files, the presence of a DEZOO.SYS will let users
de-ZOO files online. Instructions are the same as for ARC and ZIP.
-32-
XI.2. ZOO Integrity Checks
Just like ARC and ZIP files, you can have the integrity of newly
uploaded ZOO files checked automatically. Instructions are the same.
XII. LHARC Files
XII.1 DeLZH
Like ARC and ZIP files, the presence of a DELZH.SYS will let users
de-LZH files online. Instructions are the same as for ARC and ZIP.
XII.2. LZH Integrity Checks
Just like ARC and ZIP files, you can have the integrity of newly
uploaded LZH files checked automatically. Instructions are the same.
XIII. GIF & FRA Files
Citadel-86's support of GIF & FRA files resides in the commands .Read
Extended (.RE) and .Read Archive Directory (.RAD). When .RE is used
on .GIF and .FRA files, Citadel-86 will extract information concerning
the pixel dimensions of the picture and the number of colors used and
display those values as part of the file description. When .RAD is used
on .GIF and .FRA files, Citadel-86 will display the GIF version of the
file, along with the dimensional and color data mentioned above.
This section is purely informational for the benefit of the sysop.
GIF & FRA file support requires no action from the sysop.
XIV. Sysop's Editor
The sysConsole Sysop has a special message composition ability not
available to the general users, and this is called the Sysop Editor.
This is the ability of the sysop (i.e., any user at the sysConsole) to
enter and edit a message using an editor other than the Citadel entry
system.
In many ways this is similar to simply preparing a message offline
using an editor and then using the <F>ile grab option of the Sysop Menu.
However, this option is far superior, for several reasons.
First, it's somewhat faster. When using an editor to prepare a
response for processing by File Grab, in order to get to your editor you
must go through Outside Commands, which causes CTDLTABL.SYS to be
written, etc. etc. When using this option, CTDLTABL.SYS is not written
(think of this as a warning, too), and further the process of bringing
your editor should be thoroughly automated.
Second, you have far more flexibility. The option is accessed via an
option off of the 'entry cmd: ' prompt. Thus, you can begin preparing a
message using Citadel, switch off to your editor half-way through, return
to Citadel for more work or simply a formatted viewing, etc. as much as
your heart desires.
In order to activate this option, you must add at least one parameter to
your CTDLCNFG.SYS. This one is called '#EDITOR'. It is followed by a
string naming the editor of your choice. Your PATH is used to search for
the editor, so you need not specify where it is located (although you may
-33-
wish to if you store your editor in a RAM drive). The editor you use must
output a "normal" DOS text file; no attempt is made to filter the text for
WordStar, WordPerfect, or other proprietary formats (although I haven't
tested any of those to see if, by happenstance, they might work. Who
knows, you might luck out!). An example might be
#EDITOR "q" -- use qedit
If your editor needs any options set on the command line, this is the
place to put them. Suppose your editor, which in this example will be
'wumpus', needs the option "-r" on the command line. A good parameter
entry would then be
#EDITOR "wumpus -r"
You might also want to consider using BAT files (specified in the
#EDITOR entry) which will clean up unwanted BAK files, etc...
You may optionally add a second parameter to your CTDLCNFG.SYS called
"#EDIT-AREA". If this is present, Citadel-86 will use the area (drive
and directory) you specify for the temporary editing space, instead the
current drive and directory. This makes it easy to use a fast RAM disk
for Outside editing. For instance:
#EDIT-AREA "d:\"
If you do plan to use a RAM drive, remember that messages can be up to
7.5K long, so plan your RAM drive accordingly, keeping in mind possible
.BAK files generated by your editor, etc.
Citadel-86 attempts to run your editor by issuing the command line
"<editor> <editing space>tempmsg.sys"
When returning from your editor, Citadel-86 will automatically delete
the tempmsg.sys file; however, if your editor (like many) leaves .BAK
files behind, Citadel-86 will not try to delete it.
And how do you access it? By typing an 'O' at the 'entry cmd: ' prompt
of the message editor.
Finally, you may use the EASE utility to make these modifications,
rather than directly changing your CTDLCNFG.SYS file.
XIV.1 Sysop Editor Notes
o Editors which must* run from their own directories may be difficult
to support. You might want to try using a BAT file if you really insist
on using such editors.
o Making a small RAM drive and specifying it as the editing space may
make this feature faster. Placing your editor in the RAM drive may make
things really fly, if you have the extra RAM to do it. Remember to
specify the RAM drive in your #EDITOR parameter, though, if you do place
your editor in the RAM drive.
-34-
o When you are ready to return to C-86, simply save the file back out
to TEMPMSG.SYS (most editors will do this in some automatic style for you)
and exit the editor. C-86 will then retake control of the system and
leave you at the 'entry cmd: ' prompt with your newly modified message,
ready for more action.
XV. Doors Support
(Parts of Citadel-86 doors courtesy Gary Meadows of Asgard-86.)
A "door" is a program which may be run from a host BBS program. There
are currently many special door programs available, including door
monitors such as DOORWAY, games and utilities, most of which you should
be able to run from Citadel-86 (if you find one that can't, let us know).
When used correctly, it is intended that Citadel-86 Doors be
QBBS-compatible.
XV.1 Administration
XV.1.a User administration
Naturally, a sysop does not want just any old person to use doors.
Therefore you may assign and take away door privileges from anyone you
please. You do this via the User Administration menu, using the <D>oors
privilege.
XV.1.b Door administration
Doors are created using CTDLCNFG.SYS. Theoretically, you may assign
as many doors as you wish; practically, you may be limited by disk space
as well as user patience.
Door parameters in CTDLCNFG.SYS are a little different from any other
parameter in that they do not occupy only one line of the file. Rather,
they occupy three lines. Here is the generic format of door parameters.
#door <entry code> <program> <location> <who> <type> <time limit> [room]
<description>
<command line parameters>
We'll go through these one at a time.
"entry code" - An entry code is what the user types to request this door.
This parameter may not contain more than four letters, and it is your
responsibility to ensure that no duplicates occur amongst your entry
codes.
"program" - This is the name of the program or BAT file which
constitutes the door. You need not specify the suffix of the file,
although it is legal to do so.
"location" - This field should contain the location in your disk system
to move to before executing "program name". If your specification
contains a drive designation, the system will make that drive the default
drive before executing attempting to change directories to the given
directory. If you do not wish the system to change to another directory
before executing the program, this field should contain ".", which is the
-35-
DOS jargon for "current directory". When the door has finished, the
system will return to the directory it was in when Citadel-86 came down
to execute the Door.
"who" - This field is a primitive security mechanism. You may fill in
this field with one of four values: "anyone", which indicates that anyone
with Door privileges may execute this door, "aide" which allows only
aides may use this door, "sysop", allowing only sysops, remote and at
the system console, to use this door, "autodoor" (explained in
Section XIII.4), and "newusers" (described in Section XIII.5).
"type" - this describes the type of door. Currently, this is limited to
one of three values, these being
o "modem" - User must be remote (modem) in order to use door.
o "console" - User must be at the system console in order to use door.
o "anywhere" - User location does not matter.
"time limit" - This field lets you specify how long (aggregate) a user may
use any given door during a single login period. You should specify the
time in minutes; if you do not wish to place a time limit on a given door,
you may instead specify "unlimited".
"room" - This is an optional parameter. If it is present, it specifies
the name of the room from which this door may be run; the door may not be
run from any other room. So, this provides another security arrangement.
If this parameter is not present, then this door may be run from any room,
subject to other restraints.
"description" - This field, which occupies a line of its own, should
contain your description of the door. These descriptions are displayed
to users. The description should not be more than 79 characters in
length.
"command line parameters" - This important field is used to build a
command line for the program. The format here should be simple to use:
type in the command line, minus the program name, as if you were typing
it at the command line. This sounds simple until you realize that some
doors need data from the command line which you simply cannot provide
from here. This includes such data as the Com port, the baud rate, etc.
Therefore, we have provided to you a simple way to add these sorts of
things in. Wherever in the command line you need to add these things in,
you will instead type a percentage sign ('%') followed by a letter. This
%letter will be replaced at runtime by the value associated with that
combination. The following is a list of all such combinations currently
supported.
%a - This is replaced with the current baud rate of the user, or 0 if
sysConsole.
%b - This is replaced with the current bps rate of the user, or 0 if
sysConsole.
%c - This is replaced with the port number of the user, or "LOCAL" if
sysConsole.
-36-
%d - This is replaced with the name of the user.
%e - This is replaced with the log number of the user. Unlikely that
you'll need it, but just in case ...
%f - This is replaced with the ANSI code of the user. This is not part of
the user record, unlike Asgard-86, but provision may be made in a
later release for the user to indicate what level of ANSI they can
handle. At the moment, it is set to 0.
Identification of more useful parameters which Citadel-86 might supply
is welcome (and probably easy to add).
Even if there is no need for information to be on the Description and
Parameters, blank lines must exist in their positions.
So, let's move on to an example. Suppose we have a door program named
MOO. It must be run from the directory C:\MOOING, and the command line must
look like
MOO COMx SPEED=y
where x is the Com port and y is the baud rate of the user. Further, you
want the users to type .Door COWS in order to run the program, and
everyone may use it, but only from remote, but they may use it as much as
they like. Your entry in ctdlcnfg.sys would then look like
#door COWS MOO c:\mooing anyone modem unlimited
This program is a must for beefeaters!
COM%c SPEED=%a
Suppose you wanted to add the further restriction that it only can be run
from a room named Door Talk>. Then the entry would read
#door COWS MOO c:\mooing anyone modem unlimited Door Talk
This program is a must for beefeaters!
COM%c SPEED=%a
XV.2 BAT file support
Once a user has selected a door (the next section discusses the user
interface), Citadel-86 will bring itself down. THIS IS VERY IMPORTANT:
the system will EXIT with an ERRORLEVEL of 4, which is a reserved
ERRORLEVEL of Citadel-86. Therefore, your BAT MUST be prepared to handle
exits of ERRORLEVEL 4 by running the C-86 utility C86Door.Exe if you wish
to run doors. For instance,
:loop
ctdl ...
...
if errorlevel 4 goto door
...
:door
c86door
goto loop
C86DOOR does not require any command line arguments.
User interface is via the <D>oor and <.D>oor <entrycode> commands.
-37-
XV.3 Door compatability
Citadel-86 door support is designed to be compatible with the QBBS
standard; in other words, C86Door will generate DORINFO1.DEF before the
door is activated. Citadel-86 also contains support for WILDCAT! and
Marshall Dudley's DOORWAY.SYS file (so you can run DOORWAY using the SYS
parameter).
XV.4 Automatic doors
An 'automatic door' in Citadel-86 parlance is a door which is auto-
matically run when a specified user logs in. This can be useful in
several situations, such as with non-C86Net sites which can poll you by
calling your system and doing a manual login. By setting an automatic
door to run when that account is used, you may immediately drop the
caller into an appropriate network program. And then, of course,
there's your imagination.
Automatic door administration is somewhat more complicated than normal
door administration. The system operator must insert two (or more
entries) into his CTDLCNFG.SYS file. Naturally, one is the #door entry.
As noted above,`you may, or may not use, a fourth value for the 'who'
field of a #door entry, and that is 'autodoor'. If you use that for the
'who' value, then the door is completely unavailable to everyone except
the account(s) assigned to this door, and then only on login. So, for
instance,
#door mooing cows \pasture autodoor anywhere unlimited
<blank line unless you want a description>
<whatever parameters are needed>
So, how do you assign one or more users to an automatic door? By using
#events (you had better be familiar with events). The format for an event
which will do this is
#event <days> <time> autdoor quiet <duration> "" "<username>" <entrycode>
The fields <days>, <time>, and <duration> function as usual, allowing
you to control when automatic doors are active on an individual basis.
The <class> autodoor tells Citadel-86 that this is an automatic door
event. "<username>" is the name of the user which will trigger this
automatic door in quotes. <entrycode> is the entrycode of the door to
execute. So, continuing with the above example,
#event all 2:00 autodoor quiet 180 "" "Bossy" mooing
would cause Citadel-86, on all days, but only between 2am and 5am, to
execute the door identified as 'mooing' whenever the user Bossy logs in.
Note that when the door is finished, the user is not disconnected from
the system.
-38-
XV.5 New User Doors
You may configure Citadel-86 to run a door when a user tries to login
as a new user. To do so, you set up a door entry in your CTDLCNFG.SYS
file just as normal, except for the "who" field. This should contain
the value "newusers". For example,
#door s valid . newusers anywhere -1
New user door
...
This entry defines a door named "s", running a program named VALID
in the current directory ("."), of type newusers which can be run
from both remote and local. In reality, the door name is irrelevant,
as is the door description. The parameters field will, of course, be
crucial.
There is one critical difference between newuser doors and other
types of doors -- newuser doors are NOT run by taking Citadel-86 down
and letting the batch file take over. Instead, Citadel-86 will
directly execute the program. This is done both for internal technical
reasons and for performance reasons. Very large systems may have
difficulties running new user doors for this reason.
This is a rather advanced option, and may require some work to get
working correctly, especially if you are trying to use the DOORWAY
driver program. If you are, please bear in mind that since Citadel-86
is directly executing the program rather than letting the C86Door.Exe
program do the work, the DOOR.SYS file will NOT be generated. Since
this file is only an option for DOORWAY, this does not cripple you,
only makes things more difficult.
XVI. Citadel-86 as a Door
Citadel-86 may be used as a door itself if you wish. The procedure
for setting up a Citadel-86 as a door is
a) Add the parameter '#ISDOOR' to your CTDLCNFG.SYS file and reconfigure
b) Citadel-86 will expect the string "bps=xxx" on its command line when
coming up. If it is not present, the installation will gracefully abort.
The "xxx" is the bps of the modem (i.e., "30", "120", etc.), or "0" if
the user is at the sysConsole ("LOCAL" is a synonym for "0" in this case).
A BAT file containing "ctdl bps=%1" might be a good idea if you can get
whatever BBS you're using to put the correct data on the command line of
the BAT file.
If you're running Citadel-86 as a door from within another Citadel-86
(!) a good #door entry might be
#door xxxx ctdl xxxxx xxxxxx xxxxxxxx xxxxxxxxx [xxxxxx]
Another C-86
bps=%b ...
since "%b" will put out the bps of the user (see Section XIII).
-39-
XVII. External Protocol Drivers
In addition to the three file transfer protocols supported internally
by Citadel-86 (XMODEM, WXMODEM, and YMODEM BATCH), you may also configure
your system to support external protocols, such as DSZ, etc. These
external protocols can be used for both file and message transfers,
almost appearing to be built-in protocols, differing only in that slight
pauses may occur while starting the external driver and an additional pause
for message transfers (messages must be saved to disk in a file before
transferring them to the user).
XVII.1 Adding drivers
You may add one or more protocols to your system by creating a file
named CTDLPROT.SYS in your #ROOMAREA directory. This file is a textfile.
Each line of the textfile contains an entry for an external protocol
you wish to support for uploading and/or downloading. The generic format
of each entry is:
[selector] [1/M] [name] [u/d] [command line]
The 'selector' is the key the user must press in order to access this
particular protocol. For instance, if you want to make ZMODEM available
to your users, and you wish them to access ZMODEM via the letter 'Z',
then the entry would read "Z ...".
If you should accidentally select a letter already in use for that
particular command (i.e., .Read or .Enter), then your user cannot access
the protocol even though you've made it available. Therefore, you may
have to select a different letter as a selector. You may use any capital
letter (small letters are not valid) or a digit. Please consult your help
files to discover what letters are already reserved (SUMMARY.HLP).
The '1/M' field tells Citadel-86 if this protocol is capable of batch
downloads or not (and, therefore, this entry is meaningless but required
for upload specifications). '1' means this protocol can only send one
file, while 'M' means it can send 'M'any. Since ZMODEM is capable of
batch transfers, your entry for ZMODEM, to continue our example, would now
look like "Z M ..."
The 'name' of the entry is the name you wish echoed to the user when
the user selects a protocol. If the first letter of the name does not
match the Selector of this entry, Citadel-86 will backspace over the
Selector and replace it with the name. This field can NOT consist of
two words separated by a space! In other words, "MooModem Protocol" will
NOT work. If we might continue our example, Zmodem's entry would now
look like "Z M Zmodem ..."
The 'u/d' part specifies if this particular entry is for uploading or
downloading a file. There is absolutely nothing wrong with having double
entries for the same protocol, one covering how to upload a file using
the protocol and the other downloading, and in fact that is very much the
rule. So, for Zmodem, uploading would look like "Z M Zmodem U ..." and
downloading would look like "Z M Zmodem D ...".
-40-
Finally, the 'command line' part of the entry is the actual command
sent to DOS in order to receive or send a file. Obviously, just a simple
text line may not be enough, so you, the sysop, are provided with a way
to tell the external protocol a number of things. To specify one of these
parameters to a driver, you use the following 'macros':
%a - The baud rate of the caller
%b - The bps (bytes per second) of the caller
%c - The port the your system is configured for (#COM)
%d - The name of the current user
%g - The list of files for transfer
%h - Identical to %c except it will be replaced with
"COMx" where x will be your com value, unless the user
is at the system console, in which case "LOCAL" will
be generated. Eases use with DOORWAY in conjunction
with External Message Editors (Section XVIII), not real
useful for External Protocols.
%i - The name of the current room.
%j - The name of the directory if this is a directory room.
C-86 automatically moves to the correct directory within
DOS before executing a protocol; this parameter is of
more use with External Message Editors.
%k - The column width of the current user (more useful for
External Message Editors).
For instance, when using DSZ to for Zmodem, DSZ expects a command
line basically like this:
"dsz port <port num> sz <filenames>" for downloading and
"dsz port <port num> restrict rz <filenames>" for uploading.
Therefore, your ctdlprot.sys file will contain the following two lines:
Z M Zmodem U dsz port %c restrict rz %g
Z M Zmodem D dsz port %c sz %g
DSZ automatically senses the baud rate, so you do not have to tell
it that in this example.
If you do not like creating text files, you may also use the utility
EASE to create, edit, and delete your external protocol entries.
XVII.2 Number of drivers
You may only add 15 drivers to your system. That should be more
than enough.
-41-
XVII.3 USR HST 9600 notes
Citadel-86 handles the USR HST modem by 'locking' the COM port at
9600 and letting the modem handle buffering between the 9600 of the COM
port and the speed of the caller. It does this by using the CTS/RTS
lines to throttle your computer when needed. Some external protocol
drivers may not realize this is happening when used on a Citadel-86
system with a USR HST 9600, and thus become confused. This is known to
be true with Chuck Forsberg's DSZ program. It is recommended that USR
HST 9600 systems use the following entries for ZMODEM in their
CTDLPROT.SYS files:
Z M Zmodem U dsz port %c handshake both restrict rz %g
Z M Zmodem D dsz port %c handshake both sz %g
If you use a USR HST modem and experience problems with external
drivers, keep the above solution in mind when researching your problem.
XVIII. QUESTIONS & ANSWERS
---
Q. I'm completely lost, even after going through all of the below; what
do I do next?
A. Call your local (hopefully!) friendly C-86 Sysop. For the most part,
they're helpful, friendly people who are more than happy to help a new
system get its feet under itself.
---
Q. How do I create a "directory" room?
A. Edit the room.
---
Q. When I try to bring the system up, it will come up momentarily but
will then immediately give a crash message. What happened?
A. The first step is to look at the files on disk. If there is a file
called CRASH, it was created by Citadel-86, so look at it (this is a good
General first step for most problems, too). Within, there will be a
fairly cryptic message which is more for debugging purposes, but can be
useful to the new sysop, too. If it indicates some sort of displeasure
with the CALLLOG.SYS file, this is usually a good pointer to the
possibility that you haven't configured MSDOS correctly in the FILES=area.
Check to make sure that your CONFIG.SYS file has the required FILES=20
line in it, and, if you had to put it in for Citadel, make sure that you
have rebooted your system after adding it to the file.
If there are still problems, then another observation is that an
abnormally high BUFFERS= setting in CONFIG.SYS on systems that don't have
a great deal of extra free RAM available will sometimes "steal" from the
FILES= setting. So, it's worth trying setting your BUFFERS= a little
lower.
-42-
---
Q. I try to use the <O>utside command in the <O>ther commands section of
the Sysop Menu, but Citadel just says "Bad Return value". What's wrong?
A. In all probability, you don't have enough free RAM. Use CHKDSK or
some other utility to find out how much free RAM you have.
Please submit other pertinent questions to Hue, Jr. at C-86 Test
System for inclusion in this manual.
XIX. #event examples!
The #event facility of Citadel-86 is a powerful tool for the sysop,
but like many powerful tools, it is rather obtuse and arcane. The
purpose of this section is to illuminate some of the potential uses of
the #event facility. What we show here is NOT the limit of what you can
do! This is just some hints of what we have found useful ...
Before jumping into any examples, let's briefly go over the general
format of a #event again:
#event <days> <time> <class> <type> <duration> <warning string> <depends>
<days> indicates what days this event is effective for.
<time> indicates what time of the day (limited to valid days)
the event should start (military time).
<class> is roughly an indicator of what this #event does.
<type> describes, roughly, how Citadel-86 reacts when this event
occurs and a user is online.
<duration> describes how long this event is in effect.
<depends> is a field dependent on the class of the event.
In general, when you are planning events, you must know when you want
it to occur (in terms of both what days and at what time), how long it
should last, what it will do during the event (its class), and what it
will do when the event occurs if a user is on (its type). If you want
a certain event to happen more than once during a day, then you almost
certainly will have to use multiple #event entries, but this hurts
nothing.
So let's plunge into the examples!
XIX.1 Automating backups
This is one of the most basic uses of #events, and can make system
backups a process you may completely forget about. This example will
illustrate how to use #events and BAT files working together to auto-
matically backup your system.
The first step is to bring Citadel-86 down prior to backing up the
system. There are two different classes which will bring Citadel-86
down, "external" and "relative". "external" is more common, so we'll
start with this one. An event who's class is "external" will cause
Citadel-86 to terminate (exit/come down) at the days and time you
designate using the <days> and <time> fields.
-43-
When you are using an event of this class, you have two choices as to
Citadel-86's behavior when a user is on, and you select your choice using
the <type> field of the event. If you select type "preempt" then the
user will be kicked off the system when at the days and times selected.
If you select type "non-preempt", then the system will wait until the
user is finished with the system and then come down.
So let's start a partial example. Suppose you want your system to
come down twice a day, once at 6am and once at 6pm, to do an automated
backup, but to wait politely until any user who may be on has logged off.
Your CTDLCNFG.SYS would contain the following two #event lines:
#event all 6:00 external non-preempt 0 "" ?????
#event all 18:00 external non-preempt 0 "" ?????
OK, so now you're probably asking "Why is duration 0?" The reason for
this is because backing up the system may easily take less than a minute.
When Citadel-86 comes up, it always checks the event list to see if it
came up "during" an event, so by making this event's duration "0", we
ensure the system won't try to back itself up more than once.
You will also have noticed the "?????" occupying the <depends> field,
so let's discuss the depends field value. An event of class "external"
(or "relative") will always have a <depends> field which consists of a
single number. This number is the ERRORLEVEL of your choice which you
want Citadel-86 to return to the operating system. This lets you differ-
entiate between differing external events, allowing you to go to
different backup routines at different times. (Remember, ERRORLEVELs
1 - 4 are reserved by Citadel-86.) So, for example, you might have
#event all 6:00 external non-preempt 0 "" 10
#event all 18:00 external non-preempt 0 "" 11
This should give you a good idea of how to use #events for bringing
Citadel-86 down for backups, but doesn't hint about your BAT file, so
let's move on to that. This is a bit tricky, because everyone who uses
a BAT file with Citadel-86 (and that should include just about everyone)
does their's differently.
Still, most BAT files should look the same at some point, and that
is where it calls the actual CTDL program and where it tests the
-44-
ERRORLEVEL. Let's continue with the example above. That example would
lead to this partial BAT file fragment:
:loop
... [ whatever ]
CTDL .... [ the ellipsis are simply any arguments you might use ]
if ERRORLEVEL 11 goto backup1
if ERRORLEVEL 10 goto backup2
... [ this is other ERRORLEVEL handling and goto labels ]
:backup1
... [ whatever is necessary to do this backup of the system ]
goto loop
:backup2
... [ whatever is necessary to do this backup of the system ]
goto loop
... [ rest of file ]
The reason we show two different backup labels in this example, rather
than one, is to illustrate that you can keep multiple backups of the
system by using different ERRORLEVELs in your #event entries. The
precise backups you might want to perform are, of course, dependent on
your situation, and therefore we didn't illustrate those mechanics at all.
So that's how to backup your system at set times and days. There is a
second method available which will allow you to backup your system
relative to the time the system came up, i.e., every X minutes.
This type of event is something of an oddball amongst Citadel-86 events
because it doesn't follow the rules the other events follow. This event's
class is "relative", and you may select either of the types "preempt" or
"non-preempt", but some of the other fields of the event do not act in the
same way they do for any other class of events.
To wit, the <days> field is not used, although it must be present, and
the <time> field does not indicate when the event comes into effect, but
instead specifies how long before the system is supposed to come down
(hours:minutes).
Otherwise, events of class "relative" are much like events of class
"external". The <depends> field indicates the ERRORLEVEL to exit with,
etc.
XIX.2 Scheduled NETWORK sessions
As we noted in Network3.Man, there are two ways Network Sessions can
occur: through normal network sessions and through the anytime net. A
normal network session is a session which has been scheduled to begin at
a given period of time, last for so long, and then end, involving given
systems. During this time period, users may not access the system.
Anytime net sessions, on the other hand, can be scheduled to have the
potential to occur during given time periods, but they may not
necessarily occur, depending on the activity level of your system. This
subsection covers normal network sessions.
-45-
The class of this type of event is "network". The type is usually
"preempt", although it is legal to specify "non-preempt" for the type.
The days and time fields act as usual, specifying on what days and at
what time a network session is to occur, and the duration field specifies
how long the session is to last. The "warning string" field (it follows
the duration field) is used in this event to warn any users that the
system will kick him or her off 5 minutes prior to the network session
beginning if the type is "preempt".
Finally, the depends field for a network event is special and
essential, because it tells Citadel-86 which systems are eligible to be
called at this time. It does this using the networks Member Net
capability. Member Nets are explained in Network3.Man. Here is a
summary:
o A system may be assigned to any or all of 32 nets (use node editing)
o A system not assigned to any is 'disabled'
o New systems are automatically assigned to net 1
When you are constructing an event of class network, your depends
field lists which net, or nets, may be called during this network
session. When we say "nets", we mean all systems which are assigned to
this net. This lets you assign different systems to be called at
different times, participate in different C86Nets, etc.
When filling in the depends field, you simply type in the #s of the
nets you wish this network session to call, separating them by commas.
So, for example, if you want a net session to run from 3am to 3:15am
everyday of the week, but to only call net 1, you would have
#event all 3:00 network preempt 15 "network session" 1
If you wanted that net session to call all systems on nets 1, 10, and
15, you'd have
#event all 3:00 network preempt 15 "network session" 1,10,15
(NOTE THE LACK OF SPACES BETWEEN NETS!)
It's generally not a good idea to have network sessions overlap.
XIX.3 Anytime Network Sessions
An event of class "anytime-net" differs from "network" events in that
it does not schedule when a network event is to occur, but only when
there is a potential for a network session to occur (note there is a
difference between "network event" and "network session").
-46-
This "potential" is the possibility that your system will attempt to
contact other systems for network ("and immoral") purposes while an event
of this class is in effect. The possibility will be fulfilled if several
conditions are met: the specified systems need to be called, and enough
dead time has occurred on your system to cause a callout. This must
sound darned abstract, so let's look at an example:
#event All 1:00 anytime-net quiet 240 "" 10 3 1,4,9
Translated to English, this reads "On all days of the week, beginning
at 1:00 in the morning and ending at 5:00, an event of class anytime-net
will be in effect. During this time, if the system is idle for more than
10 minutes (i.e., no remote callers and no sysConsole users) at any one
time, the system will commence a net session IF any systems on nets 1, 4,
and 9 need to be called, and this net session should last a maximum of 3
minutes, unless of course during one of the calls the time is exceeded,
in which case the net session will extend until the call is completed."
In other words, the generic format of an event of this class is
#event <days> <time> anytime-net quiet <duration> "" <dead time>
<net time> <nets> (all one line)
An event of type "quiet" is an event which does not cause a fuss when
it occurs. Citadel-86 simply notes that it occurs, usually with no sign
to the current user, if any.
The field duration specifies how long the event is in effect; it does
NOT specify how long any net session which occurs during this event
should last.
Dead time and net time is the amount of time the system is inactive
before a net session is triggered and how long to stay in the net
session, respectively. Both are specified in minutes. We do not have
any recommendations at this time for these events.
The nets field is precisely the same as used in events of class
"network" (Section XVII.2).
XIX.4 Download Time Limits
Download time limits can be set in Citadel-86 via the #event facility.
When a #event of the class "dl-time" is in effect, a user may not
download for more than X minutes during any given login session.
The limit is specified in the depends field, not the duration field.
The duration field, as usual, indicates how long the event is in effect.
The limit is specified in minutes. So, if you wanted to limit your users
to 10 minutes of downloading from 7PM to midnight every day of the week
except Saturdays and Sundays, you'd have
#event Mon,Tue,Wed,Thu,Fri 19:00 dl-time quiet 300 "" 10
The reason the type is "quiet" is because there's no need to bring the
system down or kick the user off. Citadel-86 simply notes the new event
and the limit, while the user never notices a thing.
Download time limits do not apply to Aides & Sysops.
-47-
XIX.5 Door Time Limits
The #event facility may be used to place limits on the total amount of
time a user may use doors during a single login session. As usual, the
key to specifying this ability lies in the value of the class field of
the event. An event which controls how long users may use a door looks
like this:
#event <days> <time> door-limit quiet <duration> "" <limit>
The days, time, and duration fields allow you to specify on what days,
starting at what times, and how long an event of this class should last.
You specify the door time limitin the depends field, in minutes. Simple
as that. Suppose you don't want users to accumulate more than 5 minutes
of door time between 7 and midnite of any day.
#event all 19:00 door-limit quiet 300 "" 5
would do this. Please note that this is not an infallible event. If the
user decides to run a door which allows more usage when it is up than is
allowed here, the door-limit will be exceeded. If the user does exceed
the limit, Citadel-86 will stop the user from running any more doors.
But this is not by any means a super-duper overseer.
XIX.6 Automatic Doors
An 'automatic' door in Citadel-86 is a door which is automatically
executed when a specified user logs in. This is a highly specialized
capability, and so if you're not sure that you need it, don't worry about
it. Basically, this will be of use to sysops who's systems may be
subject to periodic polls from automated callers.
A #event to implement an automatic door is of the form
#event <days> <time> autodoor quiet <duration> "" "username" doorcode
As usual, days, time, and duration lets you specify when this autodoor
is active. While we agree such ability might be of little use, it is
there and feel confident someone somewhere will find a use for it. This
sort of event uses class "autodoor" and type "quiet".
Finally, the depends field for this class of event has two values. The
first value is the name of the user which will trigger an automatic door,
while the second value specifies which door is to be triggered.
Example 1: Suppose everytime the user named "Local UseNet" logs in you
want to execute the door named "usenet". You would then require two
separate entries in your CTDLCNFG.SYS. The first one (although they may
physically be in any order you wish) is the #door parameter, which would
read something like this:
#door usenet xxxx xxxxx autodoor modem unlimited
<whatever necessary options>
If you are already familiar with doors, you will note the new 'who' type
of door mentioned above: "autodoor". A door entry with such a who value
will not be shown in the doors listings shown to users, and cannot be run
manually. However, it is not mandatory that a door to be run as an
autodoor be so marked.
-48-
The second entry is the #event which will activate the autodoor. This
would be
#event all 1:00 autodoor quiet 1440 "" "Local Usenet" usenet
This event is always active (note the duration of 1440), so whoever,
or more accurately whatever, logs in using this account will always be
thrust into the door named 'usenet'. Note the use of double quotes
around the name of the user who triggers this autodoor: they are
MANDATORY. They are there so we may distinguish between the name of the
user, which may have more than one word, and the name of the door entry,
which is always one word.
XX. External Message Editors
Ambitious sysops may provide "external message editors" to their
users. An external message editor is just like the Sysop's Editor
(Section XII), except they can be made available to the remote users,
if the sysop is ready to do the legwork. When Citadel-86 executes
an external editor, it makes no attempt at redirecting the input from
the keyboard to the modem, or the output from the screen to the modem.
Instead, the sysop must either find an editor which will do such things,
or find some program which will do so for them, such as Marshall Dudley's
fine DOORWAY program (which, unfortunately, is shareware).
Anyways, on to the gritty details. The user interface to the external
editors is analogous to that provided for the External Protocols of
Section XV & XVII. When faced with the "entry cmd: " prompt of the message
editor, the users may select any external message editor simply by
pressing the key assigned by the sysop. For instance, if the Sysop
has decided an external full screen editor should be accessed via the
'F' key, the user need only type 'F' at the entry cmd: prompt in order
to enter text via the full screen editor. When the sysop adds external
editors to the installation, they should remember to modify the help
file EDIT.MNU to reflect the change.
But how are external editors installed? Again, analogous to the
External Protocols, all external editors are listed in a separate file.
The file is called EDITORS.SYS and should reside in your #ROOMAREA
directory. Each line in the file specifies an external editor. The
format of each line is
<editor name> <command line>
"Editor name" is the name to be echoed to the user when they select
this editor, AND the first letter of this name is the selector letter.
Additionally, this can only be one (1) word, unless you surround the
name with quotes ("). So if you want your full screen external editor
to just be FullScreen, then you could just have
FullScreen ...
but if you want it to be two words, you'd have to have
"Full Screen" ...
-49-
In both cases, the user would type 'F' to gain access to it.
"Command line" is the command line to be used to run the editor.
You may use the macros defined in the External Protocols section
(XV & XVII) in order to convey important information to the editor, except
for %g. This includes the new %h parameter. For instance, if you have
found an editor (call it "outside") which will run off your COM port,
with the arguments being the Com port, the baud, and the name of the file
to edit, you might have
"Full Screen" outside %c %a
The name of the file to edit is automatically appended to the end of
command line.
You can NOT override any of the already existing message editor
commands. As of this writing, those are <A>bort, <C>ontinue, <Global
replace, <R>eplace, <P>rint, <S>ave, <H>old, <I>nsert, <N>et, <W>ho else,
and <O>utside Editor.
This is definitely an advanced option, particularly if you are
trying to run an editor using DOORWAY or similar program. Approach
with caution.
Ease v1.5 will build the EDITORS.SYS file for you if you prefer to
do things the easy way.
Appendix A: File Formats
This section covers the file formats used in the various files managed
by Citadel-86. While we do not ever recommend editing these files by
hand, occasionally it can become useful or even necessary to edit some
of these files.
A.0 Glossary
Here's a short glossary of terms.
room slot number: The rooms in Citadel-86 are kept in a static-size file
named CTDLROOM.SYS. Each room in Citadel-86 occupies one "slot" in the
file, numbered from 0 to MAXROOMS-1, inclusive. When this term is used,
we refer to the slot number the room occupies.
A.1 Encrypted Files
The following files are encrypted and may not be edited.
CTDLTABL.SYS CTDLMSG.SYS CTDLROOM.SYS CTDLLOG.SYS
CTDLNET.SYS Domain Mail Files Route Mail Files
CITADOOR.SYS CTDLFLR.SYS User Biographies
A.2 Non-editable Files
These files are difficult or impossible to edit in a credible manner,
although they are not encrypted.
*.VEX VORTEX.SYS VTXIND.SYS.
-50-
A.3 NETMSG.$$$
This file is generated for a short time during network sessions.
Finding it on the system indicates the system crashed during a network
session. Don't worry about it.
A.4 INCASE.NET
This file is generated by Citadel-86 while rooms, etc are being received
from some other system. If during a network session the system should
crash, when it comes back up it will search for this file, and if it finds
this file it will use the information in it to try to recover what it can
from other temporary net files so that data sent during the net session
is not lost.
A.5 CTDLLOCK.SYS
This file is written to disk when the Sysop is using <O>utside commands
to run some external program. This file is written to prevent the sysop
from trying to run Citadel-86 from within itself, since this can have
extremely bad results.
A.6 CTDLFWD.SYS -- Forwarding Addresses
This file contains the addresses used for mail forwarding. The
ethical sysop will never fool with this file. Each line of this file
is a single record. The format is
<username><tab><target system><tab><name on target system>
A.7 CTDLARCH.SYS -- Room Archival Information
The names of the files used for room archival are kept in the text
file CTDLARCH.SYS, residing in the #ROOMAREA directory. CTDLARCH.SYS is
generated and maintained by CTDL.EXE, and should not be disturbed while
CTDL.EXE is in operation (i.e., through <O>utside commands). When
Citadel-86 is down, however, the Sysop may edit CTDLARCH.SYS to taste.
Adding entries is ineffective; changing entries works. Each line of
the file constitutes an entry for some room. The format is
<room slot number> <file name>
The room slot number should not be changed. The filename, of course, may
be changed.
Do not delete entries from this file, either.
A.8 CTDLINFO.SYS -- Room Information Information
The data accessed via the <I>nformation command is stored in the file
CTDLINFO.SYS, residing in the #ROOMAREA directory. This is a straight
text file composed of zero or more entries. Each entry begins with the
entry
#room <roomname>
It is followed by the text of the Information for the given room, followed
by a "true" blank line. That is, if this file is being directly edited for
some reason, a blank line within the information text can be simulated by
placing a space or blank on the line to appear blank within the information
text. But to end the entry, a blank line without a space is required.
-51-
This file should never be edited while the system is up. The system
should be taken down before any modifications are made to the system.
Editing this file may be appropriate if the sysop desires Information
to be available for the Lobby, Mail, or Aide rooms.
A.9 CTDLMODR.SYS -- Room Moderators
Room moderator information is kept in CTDLMODR.SYS, in the #ROOMAREA
directory. This is a text file, in which each line constitutes a record.
The first field is the room slot this record refers to, while the second
line refers to the name of the person moderating this room.
A.10 CTDLDIR.SYS -- Directory Room Information
The listing of directory rooms and their associated MS-DOS
specifications is kept in a normal MS-DOS text file named CTDLDIR.SYS,
which resides in the #ROOMAREA directory. While Citadel-86 automatically
maintains this file at all times, not requiring any Sysop interference,
the inquisitive Sysop can manipulate this file.
The contents of this file is as follows.
<room #> <directory specification>
The room # field should never be touched. However, the second field
can be changed when Citadel-86 is not up, thus changing the directory
associated with the room specified by the room number.
Really, though, there's not much reason to change this file manually.
Appendix B: Contributors
There have been a number of contributors to Citadel-86 over the years,
and it's only appropriate to acknowledge such people.
It's natural to begin by remembering the original author of Citadel-86,
Cynbe ru Taren of Seattle, and the early contributors, such as David V.
Mitchell and others we are not aware of. They are the reason Citadel-86
and its many children exist today.
A partial list of others include the following:
Hue, Sr. of SuperComp III: for general support, testing, suggestions,
and motivation, not to mention providing access to the code!
John L. Stanley: A great deal of early work with Hue, Jr., to get the
bugs out of the early CP/M Citadel 2.10 code, and then the later
development of most of the core concepts of C86Net.
Jay Johnson, for Insert Paragraph and a great deal of general work
and ideas, not to mentioned Citadel-68k.
Dale Schumacher (Dalnefre') of Syntel for additions to the Configure
program and fighting with me a lot.
-52-
Paul Gontier of Kat's Alley for the video support code.
Eric Brown of Primordial Ooze for the Zenith Z-100 modem code.
Paul Gauthier of Cerebral Cortex for the Hot Helps code, USENET access
gateway, OtherNet concept, and pushing Citadel-86 into implementing Anytime
Netting, plus a host of minor suggestions.
Gary Meadows of Asgard-86 for his Door Support code and other
suggestions.
Kip DeGraaf for taking care of the netmaps.
SSR of Chaos II for forcing USR HST 9600 support into Citadel-86.
Royce Howland of Edmonton for his CALLSTAT utility.
BKB of Novu for several useful utilities.
Fred Rose of House of Fred for another utility.
Phluffy for general ideas and STROLL.
Andy Rubin of Spies in the Wire for being the first network node
outside of Minnesota.
mary mary for her many ideas, unfailing support and editing these damn
manuals!
And, of course, the cast of thousands responsible for the ideas
which have made Citadel-86 into what it is today.
-- Hue, Jr.
-53-